<?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="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/e-book-client.h"/>
  <namespace name="EBook"
             version="1.2"
             shared-library="libebook-1.2.so.16.1,libedataserver-1.2.so.16.0"
             c:identifier-prefixes="E"
             c:symbol-prefixes="e">
    <record name="AddressWestern" c:type="EAddressWestern">
      <field name="po_box" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="extended" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="street" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="locality" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="region" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="postal_code" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="country" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="free" c:identifier="e_address_western_free">
        <doc xml:whitespace="preserve">Frees @eaw and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <function name="parse"
                c:identifier="e_address_western_parse"
                introspectable="0">
        <doc xml:whitespace="preserve">Parses a string representing a mailing address into a
structure of type #EAddressWestern.</doc>
        <return-value>
          <doc xml:whitespace="preserve">A new #EAddressWestern structure, or %NULL if the parsing failed.</doc>
          <type name="AddressWestern" c:type="EAddressWestern*"/>
        </return-value>
        <parameters>
          <parameter name="in_address" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing a mailing address</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="Book"
           c:symbol-prefix="book"
           c:type="EBook"
           parent="GObject.Object"
           glib:type-name="EBook"
           glib:get-type="e_book_get_type"
           glib:type-struct="BookClass">
      <constructor name="new"
                   c:identifier="e_book_new"
                   deprecated="Use e_book_client_new() instead."
                   deprecated-version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBook corresponding to the given @source.  There are
only two operations that are valid on this book at this point:
e_book_open(), and e_book_remove().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBook.</doc>
          <type name="Book" c:type="EBook*"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default_addressbook"
                   c:identifier="e_book_new_default_addressbook"
                   deprecated="Use e_book_client_new_default() instead."
                   deprecated-version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBook corresponding to the user's default address book.
See the documentation for e_book_new() for further information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBook</doc>
          <type name="Book" c:type="EBook*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_uri"
                   c:identifier="e_book_new_from_uri"
                   deprecated="Use e_book_client_new_from_uri() instead."
                   deprecated-version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBook corresponding to the given uri.  See the
documentation for e_book_new for further information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBook.</doc>
          <type name="Book" c:type="EBook*"/>
        </return-value>
        <parameters>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:whitespace="preserve">the URI to load</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_system_addressbook"
                   c:identifier="e_book_new_system_addressbook"
                   deprecated="Use e_book_client_new_system() instead."
                   deprecated-version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBook corresponding to the user's system address book.
See the documentation for e_book_new() for further information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBook.</doc>
          <type name="Book" c:type="EBook*"/>
        </return-value>
      </constructor>
      <function name="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="free_change_list"
                c:identifier="e_book_free_change_list"
                deprecated="Related function has been dropped completely."
                deprecated-version="3.2">
        <doc xml:whitespace="preserve">Free the contents of #change_list, and the list itself.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="change_list" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GList of #EBookChange items</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="BookChange"/>
            </type>
          </parameter>
        </parameters>
      </function>
      <function name="get_addressbooks"
                c:identifier="e_book_get_addressbooks"
                deprecated="Use e_book_client_get_sources() instead."
                deprecated-version="3.2"
                throws="1">
        <doc xml:whitespace="preserve">Populate *addressbook_sources with the list of all sources which have been
added to Evolution.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @addressbook_sources was set, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="addressbook_sources"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">A pointer to a #ESourceList to set</doc>
            <type name="EDataServer.SourceList" c:type="ESourceList**"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_self"
                c:identifier="e_book_get_self"
                deprecated="Use e_book_client_get_self() instead."
                deprecated-version="3.2"
                throws="1">
        <doc xml:whitespace="preserve">Get the #EContact referring to the user of the address book
and set it in @contact and @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EContact pointer to set</doc>
            <type name="Contact" c:type="EContact**"/>
          </parameter>
          <parameter name="book"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EBook pointer to set</doc>
            <type name="Book" c:type="EBook**"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_self"
                c:identifier="e_book_is_self"
                deprecated="Use e_book_client_is_self() instead."
                deprecated-version="3.2">
        <doc xml:whitespace="preserve">Check if @contact is the user of the address book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @contact is the user, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </function>
      <function name="marshal_VOID__UINT_STRING"
                c:identifier="e_book_marshal_VOID__UINT_STRING">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="n_param_values" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="param_values" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="invocation_hint" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="marshal_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="set_default_source"
                c:identifier="e_book_set_default_source"
                deprecated="Use e_book_client_set_default_source() instead."
                deprecated-version="3.2"
                throws="1">
        <doc xml:whitespace="preserve">Sets @source as the default address book.  This is the source that
will be loaded in the e_book_get_default_addressbook call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the setting was stored in libebook's ESourceList, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="auth_required">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="backend_died">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="connection_status">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connected" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="writable_status">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="writable" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_contact"
              c:identifier="e_book_add_contact"
              deprecated="Use e_book_client_add_contact_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Adds @contact to @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_contact_async"
              c:identifier="e_book_add_contact_async"
              version="2.32"
              deprecated="Use e_book_client_add_contact() and e_book_client_add_contact_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Adds @contact to @book without blocking.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the operation was started, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookIdAsyncCallback" c:type="EBookIdAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_add_contact"
              c:identifier="e_book_async_add_contact"
              deprecated="Use e_book_add_contact_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Adds @contact to @book without blocking.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the operation was started, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookIdCallback" c:type="EBookIdCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_authenticate_user"
              c:identifier="e_book_async_authenticate_user"
              deprecated="Use e_book_authenticate_user_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Authenticate @user with @passwd, using the auth method
@auth_method. @auth_method must be one of the authentication
methods returned using e_book_get_supported_auth_methods.
This function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="user" transfer-ownership="none">
            <doc xml:whitespace="preserve">user name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="passwd" transfer-ownership="none">
            <doc xml:whitespace="preserve">password</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="auth_method" transfer-ownership="none">
            <doc xml:whitespace="preserve">string indicating authentication method</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_commit_contact"
              c:identifier="e_book_async_commit_contact"
              deprecated="Use e_book_commit_contact_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Applies the changes made to @contact to the stored version in
@book without blocking.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the operation was started, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_book_view"
              c:identifier="e_book_async_get_book_view"
              deprecated="Use e_book_get_book_view_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Query @book with @query, creating a #EBookView with the fields
specified by @requested_fields and limited at @max_results records.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookQuery</doc>
            <type name="BookQuery" c:type="EBookQuery*"/>
          </parameter>
          <parameter name="requested_fields" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GList containing the names of fields to return, or NULL for all</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="max_results" transfer-ownership="none">
            <doc xml:whitespace="preserve">the maximum number of contacts to show (or 0 for all)</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="call">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookBookViewCallback" c:type="EBookBookViewCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_changes"
              c:identifier="e_book_async_get_changes"
              introspectable="0"
              deprecated="Use e_book_get_changes_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Get the set of changes since the previous call to
e_book_async_get_changes() for a given change ID.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="changeid" transfer-ownership="none">
            <doc xml:whitespace="preserve">the change ID</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when operation finishes</doc>
            <type name="BookListCallback" c:type="EBookListCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_contact"
              c:identifier="e_book_async_get_contact"
              deprecated="Use e_book_get_contact_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Retrieves a contact specified by @id from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a unique string ID specifying the contact</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when operation finishes</doc>
            <type name="BookContactCallback" c:type="EBookContactCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_contacts"
              c:identifier="e_book_async_get_contacts"
              introspectable="0"
              deprecated="Use e_book_get_contacts_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Query @book with @query.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE on success, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookQuery</doc>
            <type name="BookQuery" c:type="EBookQuery*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookListCallback" c:type="EBookListCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_required_fields"
              c:identifier="e_book_async_get_required_fields"
              deprecated="Use e_book_get_required_fields_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Gets a list of fields that are required to be filled in for
all contacts in this @book. This function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the operation was started, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookEListCallback" c:type="EBookEListCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_supported_auth_methods"
              c:identifier="e_book_async_get_supported_auth_methods"
              deprecated="Use e_book_get_supported_auth_methods_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Queries @book for the list of authentication methods it supports.
This function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookEListCallback" c:type="EBookEListCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_get_supported_fields"
              c:identifier="e_book_async_get_supported_fields"
              deprecated="Use e_book_get_supported_fields_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Gets a list of fields that can be stored for contacts
in this @book. Other fields may be discarded. This
function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookEListCallback" c:type="EBookEListCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_open"
              c:identifier="e_book_async_open"
              deprecated="Use e_book_open_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Opens the addressbook, making it ready for queries and other operations.
This function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:whitespace="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="open_response"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_remove"
              c:identifier="e_book_async_remove"
              deprecated="Use e_book_remove_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Remove the backing data for this #EBook. For example, with the file backend this
deletes the database file. You cannot get it back!</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_remove_contact"
              c:identifier="e_book_async_remove_contact"
              deprecated="Use e_book_remove_contact_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Removes @contact from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_remove_contact_by_id"
              c:identifier="e_book_async_remove_contact_by_id"
              deprecated="Use e_book_remove_contact_by_id_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Removes the contact with id @id from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a unique ID string specifying the contact</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="async_remove_contacts"
              c:identifier="e_book_async_remove_contacts"
              deprecated="Use e_book_remove_contacts_async() instead."
              deprecated-version="3.0">
        <doc xml:whitespace="preserve">Removes the contacts with ids from the list @ids from @book.  This is
always more efficient than calling e_book_remove_contact() if you
have more than one id to remove, as some backends can implement it
as a batch request.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ids" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GList of const gchar *id's</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookCallback" c:type="EBookCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="authenticate_user"
              c:identifier="e_book_authenticate_user"
              deprecated="Connect to EClient::authenticate signal instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Authenticates @user with @passwd, using the auth method
@auth_method.  @auth_method must be one of the authentication
methods returned using e_book_get_supported_auth_methods.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="user" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="passwd" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="auth_method" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="authenticate_user_async"
              c:identifier="e_book_authenticate_user_async"
              version="2.32"
              deprecated="Connect to EClient::authenticate signal instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Authenticate @user with @passwd, using the auth method
@auth_method. @auth_method must be one of the authentication
methods returned using e_book_get_supported_auth_methods.
This function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="user" transfer-ownership="none">
            <doc xml:whitespace="preserve">user name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="passwd" transfer-ownership="none">
            <doc xml:whitespace="preserve">password</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="auth_method" transfer-ownership="none">
            <doc xml:whitespace="preserve">string indicating authentication method</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="cancel"
              c:identifier="e_book_cancel"
              deprecated="Use e_client_cancel_all() or e_client_cancel_op() on an #EBookClient object instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Used to cancel an already running operation on @book.  This
function makes a synchronous CORBA to the backend telling it to
cancel the operation.  If the operation wasn't cancellable (either
transiently or permanently) or had already comopleted on the server
side, this function will return E_BOOK_STATUS_COULD_NOT_CANCEL, and
the operation will continue uncancelled.  If the operation could be
cancelled, this function will return E_BOOK_ERROR_OK, and the
blocked e_book function corresponding to current operation will
return with a status of E_BOOK_STATUS_CANCELLED.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="cancel_async_op"
              c:identifier="e_book_cancel_async_op"
              version="2.24"
              deprecated="Use e_client_cancel_all() or e_client_cancel_op() on an #EBookClient object instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Similar to above e_book_cancel function, only cancels last, still running,
asynchronous operation.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="check_static_capability"
              c:identifier="e_book_check_static_capability"
              deprecated="Use e_client_check_capability() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Check to see if the backend for this address book supports the capability
@cap.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the backend supports @cap, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cap" transfer-ownership="none">
            <doc xml:whitespace="preserve">A capability string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_contact"
              c:identifier="e_book_commit_contact"
              deprecated="Use e_book_client_modify_contact_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Applies the changes made to @contact to the stored version in
@book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_contact_async"
              c:identifier="e_book_commit_contact_async"
              version="2.32"
              deprecated="Use e_book_client_modify_contact() and e_book_client_modify_contact_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Applies the changes made to @contact to the stored version in
@book without blocking.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the operation was started, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_book_view"
              c:identifier="e_book_get_book_view"
              deprecated="Use e_book_client_get_view_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Query @book with @query, creating a #EBookView in @book_view with the fields
specified by @requested_fields and limited at @max_results records. On an
error, @error is set and %FALSE returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookQuery</doc>
            <type name="BookQuery" c:type="EBookQuery*"/>
          </parameter>
          <parameter name="requested_fields"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GList containing the names of fields to return, or NULL for all</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="max_results" transfer-ownership="none">
            <doc xml:whitespace="preserve">the maximum number of contacts to show (or 0 for all)</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="book_view"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">A #EBookView pointer, will be set to the view</doc>
            <type name="BookView" c:type="EBookView**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_book_view_async"
              c:identifier="e_book_get_book_view_async"
              version="2.32"
              deprecated="Use e_book_client_get_view() and e_book_client_get_view_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Query @book with @query, creating a #EBookView with the fields
specified by @requested_fields and limited at @max_results records.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookQuery</doc>
            <type name="BookQuery" c:type="EBookQuery*"/>
          </parameter>
          <parameter name="requested_fields"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GList containing the names of fields to return, or NULL for all</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="max_results" transfer-ownership="none">
            <doc xml:whitespace="preserve">the maximum number of contacts to show (or 0 for all)</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="call">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookBookViewAsyncCallback"
                  c:type="EBookBookViewAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_changes"
              c:identifier="e_book_get_changes"
              introspectable="0"
              deprecated="This function has been dropped completely."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Get the set of changes since the previous call to e_book_get_changes()
for a given change ID.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="changeid" transfer-ownership="none">
            <doc xml:whitespace="preserve">the change ID</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="changes"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">return location for a #GList of #EBookChange items</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_changes_async"
              c:identifier="e_book_get_changes_async"
              version="2.32"
              introspectable="0"
              deprecated="This function has been dropped completely."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Get the set of changes since the previous call to
e_book_async_get_changes() for a given change ID.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="changeid" transfer-ownership="none">
            <doc xml:whitespace="preserve">the change ID</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when operation finishes</doc>
            <type name="BookListAsyncCallback"
                  c:type="EBookListAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact"
              c:identifier="e_book_get_contact"
              deprecated="Use e_book_client_get_contact_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Fills in @contact with the contents of the vcard in @book
corresponding to @id.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a unique string ID specifying the contact</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">(out) (transfer: full): an #EContact</doc>
            <type name="Contact" c:type="EContact**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact_async"
              c:identifier="e_book_get_contact_async"
              version="2.32"
              deprecated="Use e_book_client_get_contact() and e_book_client_get_contact_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Retrieves a contact specified by @id from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a unique string ID specifying the contact</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when operation finishes</doc>
            <type name="BookContactAsyncCallback"
                  c:type="EBookContactAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts"
              c:identifier="e_book_get_contacts"
              deprecated="Use e_book_client_get_contacts_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Query @book with @query, setting @contacts to the list of contacts which
matched. On failed, @error will be set and %FALSE returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookQuery</doc>
            <type name="BookQuery" c:type="EBookQuery*"/>
          </parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GList pointer, will be set to the list of contacts</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_async"
              c:identifier="e_book_get_contacts_async"
              version="2.32"
              introspectable="0"
              deprecated="Use e_book_client_get_contacts() and e_book_client_get_contacts_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Query @book with @query.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE on success, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="query" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookQuery</doc>
            <type name="BookQuery" c:type="EBookQuery*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookListAsyncCallback"
                  c:type="EBookListAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_required_fields"
              c:identifier="e_book_get_required_fields"
              deprecated="Use e_client_get_backend_property_sync() on"
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Gets a list of fields that are required to be filled in for
all contacts in this @book. The list will contain pointers
to allocated strings, and both the #GList and the strings
must be freed by the caller.


an #EBookClient object with #BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="fields"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #GList of fields to set on success</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_required_fields_async"
              c:identifier="e_book_get_required_fields_async"
              version="2.32"
              deprecated="Use e_client_get_backend_property() and e_client_get_backend_property_finish()"
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Gets a list of fields that are required to be filled in for
all contacts in this @book. This function does not block.



on an #EBookClient object with #BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the operation was started, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookEListAsyncCallback"
                  c:type="EBookEListAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_source"
              c:identifier="e_book_get_source"
              deprecated="Use e_client_get_source() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Get the #ESource that this book has loaded.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The source.</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
      </method>
      <method name="get_static_capabilities"
              c:identifier="e_book_get_static_capabilities"
              deprecated="Use e_client_get_capabilities() on an #EBookClient object."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Get the list of capabilities which the backend for this address book
supports. This string should not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The capabilities list</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_supported_auth_methods"
              c:identifier="e_book_get_supported_auth_methods"
              deprecated="Use e_client_get_backend_property_sync() on"
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Queries @book for the list of authentication methods it supports.
The list will contain pointers to allocated strings, and both the
#GList and the strings must be freed by the caller.


an #EBookClient object with #BOOK_BACKEND_PROPERTY_SUPPORTED_AUTH_METHODS instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="auth_methods"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #GList of auth methods to set on success</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_supported_auth_methods_async"
              c:identifier="e_book_get_supported_auth_methods_async"
              version="2.32"
              deprecated="Use e_client_get_backend_property() and e_client_get_backend_property_finish()"
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Queries @book for the list of authentication methods it supports.
This function does not block.



on an #EBookClient object with #BOOK_BACKEND_PROPERTY_SUPPORTED_AUTH_METHODS instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookEListAsyncCallback"
                  c:type="EBookEListAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_supported_fields"
              c:identifier="e_book_get_supported_fields"
              deprecated="Use e_client_get_backend_property_sync() on"
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Gets a list of fields that can be stored for contacts
in this @book. Other fields may be discarded. The list
will contain pointers to allocated strings, and both the
#GList and the strings must be freed by the caller.


an #EBookClient object with #BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="fields"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #GList of fields to set on success</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_supported_fields_async"
              c:identifier="e_book_get_supported_fields_async"
              version="2.32"
              deprecated="Use e_client_get_backend_property() and e_client_get_backend_property_finish()"
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Gets a list of fields that can be stored for contacts
in this @book. Other fields may be discarded. This
function does not block.



on an #EBookClient object with #BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">function to call when the operation finishes</doc>
            <type name="BookEListAsyncCallback"
                  c:type="EBookEListAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uri"
              c:identifier="e_book_get_uri"
              deprecated="Use e_client_get_uri() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Get the URI that this book has loaded. This string should not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The URI.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="is_online"
              c:identifier="e_book_is_online"
              deprecated="Use e_client_is_online() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Check if this book is connected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if this book is connected, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_opened"
              c:identifier="e_book_is_opened"
              deprecated="Use e_client_is_opened() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Check if this book has been opened.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if this book has been opened, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_writable"
              c:identifier="e_book_is_writable"
              deprecated="Use e_client_is_readonly() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Check if this book is writable.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if this book is writable, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="open"
              c:identifier="e_book_open"
              deprecated="Use e_client_open_sync() on an #EBookClient object instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Opens the addressbook, making it ready for queries and other operations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the book was successfully opened, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:whitespace="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_async"
              c:identifier="e_book_open_async"
              version="2.32"
              deprecated="Use e_client_open() and e_client_open_finish() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Opens the addressbook, making it ready for queries and other operations.
This function does not block.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:whitespace="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="open_response"
                     transfer-ownership="none"
                     scope="call">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove"
              c:identifier="e_book_remove"
              deprecated="Use e_client_remove_sync() on an #EBookClient object instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Removes the backing data for this #EBook. For example, with the file backend this
deletes the database file. You cannot get it back!</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="remove_async"
              c:identifier="e_book_remove_async"
              version="2.32"
              deprecated="Use e_client_remove() and e_client_remove_finish() on an #EBookClient object instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Remove the backing data for this #EBook. For example, with the file backend this
deletes the database file. You cannot get it back!</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%FALSE if successful, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact"
              c:identifier="e_book_remove_contact"
              deprecated="Use e_book_client_remove_contact_by_uid_sync() or e_book_client_remove_contact_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Removes the contact with id @id from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_async"
              c:identifier="e_book_remove_contact_async"
              version="2.32"
              deprecated="Use e_book_client_remove_contact() and e_book_client_remove_contact_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Removes @contact from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_id_async"
              c:identifier="e_book_remove_contact_by_id_async"
              version="2.32"
              deprecated="Use e_book_client_remove_contact_by_uid() and e_book_client_remove_contact_by_uid_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Removes the contact with id @id from @book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a unique ID string specifying the contact</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts"
              c:identifier="e_book_remove_contacts"
              deprecated="Use e_book_client_remove_contacts_sync() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Removes the contacts with ids from the list @ids from @book.  This is
always more efficient than calling e_book_remove_contact() if you
have more than one id to remove, as some backends can implement it
as a batch request.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ids" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #GList of const gchar *id's</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts_async"
              c:identifier="e_book_remove_contacts_async"
              version="2.32"
              deprecated="Use e_book_client_remove_contacts() and e_book_client_remove_contacts_finish() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Removes the contacts with ids from the list @ids from @book.  This is
always more efficient than calling e_book_remove_contact() if you
have more than one id to remove, as some backends can implement it
as a batch request.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ids" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GList of const gchar *id's</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cb" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">a function to call when the operation finishes</doc>
            <type name="BookAsyncCallback" c:type="EBookAsyncCallback"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_addressbook"
              c:identifier="e_book_set_default_addressbook"
              deprecated="Use e_book_client_set_default_addressbook() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">sets the #ESource of the #EBook as the "default" addressbook.  This is the source
that will be loaded in the e_book_get_default_addressbook call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the setting was stored in libebook's ESourceList, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="set_self"
              c:identifier="e_book_set_self"
              deprecated="Use e_book_client_set_self() instead."
              deprecated-version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Specify that @contact residing in @book is the #EContact that
refers to the user of the address book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="BookPrivate" c:type="EBookPrivate*"/>
      </field>
      <glib:signal name="auth-required" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="backend-died" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="connection-status" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="writable-status" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <callback name="BookAsyncCallback"
              c:type="EBookAsyncCallback"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookBookViewAsyncCallback"
              c:type="EBookBookViewAsyncCallback"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="book_view" transfer-ownership="none">
          <type name="BookView" c:type="EBookView*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookBookViewCallback" c:type="EBookBookViewCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <type name="BookStatus" c:type="EBookStatus"/>
        </parameter>
        <parameter name="book_view" transfer-ownership="none">
          <type name="BookView" c:type="EBookView*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookCallback" c:type="EBookCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <type name="BookStatus" c:type="EBookStatus"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="BookChange" c:type="EBookChange">
      <field name="change_type" writable="1">
        <type name="BookChangeType" c:type="EBookChangeType"/>
      </field>
      <field name="contact" writable="1">
        <type name="Contact" c:type="EContact*"/>
      </field>
    </record>
    <enumeration name="BookChangeType" c:type="EBookChangeType">
      <member name="added" value="0" c:identifier="E_BOOK_CHANGE_CARD_ADDED"/>
      <member name="deleted"
              value="1"
              c:identifier="E_BOOK_CHANGE_CARD_DELETED"/>
      <member name="modified"
              value="2"
              c:identifier="E_BOOK_CHANGE_CARD_MODIFIED"/>
    </enumeration>
    <record name="BookClass"
            c:type="EBookClass"
            glib:is-gtype-struct-for="Book">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="writable_status">
        <callback name="writable_status">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book" transfer-ownership="none">
              <type name="Book" c:type="EBook*"/>
            </parameter>
            <parameter name="writable" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="connection_status">
        <callback name="connection_status">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book" transfer-ownership="none">
              <type name="Book" c:type="EBook*"/>
            </parameter>
            <parameter name="connected" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="auth_required">
        <callback name="auth_required">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book" transfer-ownership="none">
              <type name="Book" c:type="EBook*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="backend_died">
        <callback name="backend_died">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book" transfer-ownership="none">
              <type name="Book" c:type="EBook*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_ebook_reserved0" introspectable="0">
        <callback name="_ebook_reserved0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved1" introspectable="0">
        <callback name="_ebook_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved2" introspectable="0">
        <callback name="_ebook_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved3" introspectable="0">
        <callback name="_ebook_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved4" introspectable="0">
        <callback name="_ebook_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <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:whitespace="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <constructor name="new"
                   c:identifier="e_book_client_new"
                   version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBookClient corresponding to the given source.  There are
only two operations that are valid on this book at this point:
e_client_open(), and e_client_remove().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBookClient.</doc>
          <type name="BookClient" c:type="EBookClient*"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #ESource pointer</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default"
                   c:identifier="e_book_client_new_default"
                   version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBookClient corresponding to the user's default
address book.  See the documentation for e_book_client_new() for
further information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBookClient</doc>
          <type name="BookClient" c:type="EBookClient*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_uri"
                   c:identifier="e_book_client_new_from_uri"
                   version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBookClient corresponding to the given uri.  See the
documentation for e_book_client_new() for further information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBookClient.</doc>
          <type name="BookClient" c:type="EBookClient*"/>
        </return-value>
        <parameters>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:whitespace="preserve">the URI to load</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_system"
                   c:identifier="e_book_client_new_system"
                   version="3.2"
                   throws="1">
        <doc xml:whitespace="preserve">Creates a new #EBookClient corresponding to the user's system
addressbook.  See the documentation for e_book_client_new() for further
information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new but unopened #EBookClient.</doc>
          <type name="BookClient" c:type="EBookClient*"/>
        </return-value>
      </constructor>
      <function name="error_create"
                c:identifier="e_book_client_error_create"
                version="3.2">
        <doc xml:whitespace="preserve">@code. If the @custom_msg is NULL, then the error message is
the one returned from e_book_client_error_to_string() for the @code,
otherwise the given message is used.

Returned pointer should be freed with g_error_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #GError containing an E_BOOK_CLIENT_ERROR of the given</doc>
          <type name="GLib.Error" c:type="GError*"/>
        </return-value>
        <parameters>
          <parameter name="code" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookClientError code to create</doc>
            <type name="BookClientError" c:type="EBookClientError"/>
          </parameter>
          <parameter name="custom_msg" transfer-ownership="none">
            <doc xml:whitespace="preserve">custom message to use for the error; can be %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="error_quark" c:identifier="e_book_client_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="error_to_string"
                c:identifier="e_book_client_error_to_string"
                version="3.2">
        <doc xml:whitespace="preserve">FIXME: Document me.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="code" transfer-ownership="none">
            <type name="BookClientError" c:type="EBookClientError"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_self"
                c:identifier="e_book_client_get_self"
                version="3.2"
                throws="1">
        <doc xml:whitespace="preserve">Get the #EContact referring to the user of the address book
and set it in @contact and @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EContact pointer to set</doc>
            <type name="Contact" c:type="EContact**"/>
          </parameter>
          <parameter name="client"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EBookClient pointer to set</doc>
            <type name="BookClient" c:type="EBookClient**"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_sources"
                c:identifier="e_book_client_get_sources"
                version="3.2"
                throws="1">
        <doc xml:whitespace="preserve">Populate @*sources with the list of all sources which have been
added to Evolution.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @sources was set, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="sources"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">A pointer to an #ESourceList to set</doc>
            <type name="EDataServer.SourceList" c:type="ESourceList**"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_self"
                c:identifier="e_book_client_is_self"
                version="3.2">
        <doc xml:whitespace="preserve">Check if @contact is the user of the address book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @contact is the user, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </function>
      <function name="set_default_source"
                c:identifier="e_book_client_set_default_source"
                version="3.2"
                throws="1">
        <doc xml:whitespace="preserve">Sets @source as the "default" addressbook.  This is the source that
will be loaded in the e_book_client_get_default_addressbook() call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the setting was stored in libebook's ESourceList, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #ESource pointer</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_contact"
              c:identifier="e_book_client_add_contact"
              version="3.2">
        <doc xml:whitespace="preserve">Adds @contact to @client.
The call is finished by e_book_client_add_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:whitespace="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_contact_finish"
              c:identifier="e_book_client_add_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Finishes previous call of e_book_client_add_contact() and
sets @added_uid to a UID of a newly added contact.
This string should be freed with g_free().

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

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

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

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

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

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

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

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

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

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:whitespace="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="contacts_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #GSList of matched contacts UIDs stored as strings</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_view"
              c:identifier="e_book_client_get_view"
              version="3.2">
        <doc xml:whitespace="preserve">Query @client with @sexp, creating an #EBookClientView.
The call is finished by e_book_client_get_view_finish()
from the @callback.

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

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:whitespace="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="view" transfer-ownership="none">
            <doc xml:whitespace="preserve">(out) an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contact"
              c:identifier="e_book_client_modify_contact"
              version="3.2">
        <doc xml:whitespace="preserve">Applies the changes made to @contact to the stored version in @client.
The call is finished by e_book_client_modify_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:whitespace="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contact_finish"
              c:identifier="e_book_client_modify_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Finishes previous call of e_book_client_modify_contact().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contact_sync"
              c:identifier="e_book_client_modify_contact_sync"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Applies the changes made to @contact to the stored version in @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contacts"
              c:identifier="e_book_client_modify_contacts"
              version="3.4"
              introspectable="0">
        <doc xml:whitespace="preserve">Applies the changes made to @contacts to the stored versions in @client.
The call is finished by e_book_client_modify_contacts_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GSList of #EContact objects</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:whitespace="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contacts_finish"
              c:identifier="e_book_client_modify_contacts_finish"
              version="3.4"
              throws="1">
        <doc xml:whitespace="preserve">Finishes previous call of e_book_client_modify_contacts().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contacts_sync"
              c:identifier="e_book_client_modify_contacts_sync"
              version="3.4"
              introspectable="0"
              throws="1">
        <doc xml:whitespace="preserve">Applies the changes made to @contacts to the stored versions in @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GSList of #EContact objects</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact"
              c:identifier="e_book_client_remove_contact"
              version="3.2">
        <doc xml:whitespace="preserve">Removes @contact from the @client.
The call is finished by e_book_client_remove_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:whitespace="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_uid"
              c:identifier="e_book_client_remove_contact_by_uid"
              version="3.2">
        <doc xml:whitespace="preserve">Removes contact with @uid from the @client.
The call is finished by e_book_client_remove_contact_by_uid_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:whitespace="preserve">a UID of a contact to remove</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:whitespace="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_uid_finish"
              c:identifier="e_book_client_remove_contact_by_uid_finish"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Finishes previous call of e_book_client_remove_contact_by_uid().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_uid_sync"
              c:identifier="e_book_client_remove_contact_by_uid_sync"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Removes contact with @uid from the @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:whitespace="preserve">a UID of a contact to remove</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_finish"
              c:identifier="e_book_client_remove_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Finishes previous call of e_book_client_remove_contact().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_sync"
              c:identifier="e_book_client_remove_contact_sync"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Removes @contact from the @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts"
              c:identifier="e_book_client_remove_contacts"
              version="3.2">
        <doc xml:whitespace="preserve">Removes the contacts with uids from the list @uids from @client.  This is
always more efficient than calling e_book_client_remove_contact() if you
have more than one uid to remove, as some backends can implement it
as a batch request.
The call is finished by e_book_client_remove_contacts_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="uids" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GSList of UIDs to remove</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:whitespace="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts_finish"
              c:identifier="e_book_client_remove_contacts_finish"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Finishes previous call of e_book_client_remove_contacts().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts_sync"
              c:identifier="e_book_client_remove_contacts_sync"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Removes the contacts with uids from the list @uids from @client.  This is
always more efficient than calling e_book_client_remove_contact() if you
have more than one uid to remove, as some backends can implement it
as a batch request.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="uids" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GSList of UIDs to remove</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default"
              c:identifier="e_book_client_set_default"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Sets the #ESource of the #EBookClient as the "default" addressbook.  This is the source
that will be loaded in the e_book_client_get_default_addressbook() call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the setting was stored in libebook's ESourceList, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="set_self"
              c:identifier="e_book_client_set_self"
              version="3.2"
              throws="1">
        <doc xml:whitespace="preserve">Specify that @contact residing in @client is the #EContact that
refers to the user of the address book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <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">
      <field name="parent">
        <type name="EDataServer.ClientClass" c:type="EClientClass"/>
      </field>
    </record>
    <enumeration name="BookClientError"
                 version="3.2"
                 c:type="EBookClientError">
      <doc xml:whitespace="preserve">FIXME: Document me.</doc>
      <member name="no_such_book"
              value="0"
              c:identifier="E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK"/>
      <member name="contact_not_found"
              value="1"
              c:identifier="E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND"/>
      <member name="contact_id_already_exists"
              value="2"
              c:identifier="E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS"/>
      <member name="no_such_source"
              value="3"
              c:identifier="E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE"/>
      <member name="no_space"
              value="4"
              c:identifier="E_BOOK_CLIENT_ERROR_NO_SPACE"/>
    </enumeration>
    <record name="BookClientPrivate" c:type="EBookClientPrivate" disguised="1">
    </record>
    <class name="BookClientView"
           c:symbol-prefix="book_client_view"
           c:type="EBookClientView"
           parent="GObject.Object"
           glib:type-name="EBookClientView"
           glib:get-type="e_book_client_view_get_type"
           glib:type-struct="BookClientViewClass">
      <virtual-method name="complete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="objects_added" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="objects" transfer-ownership="none">
            <type name="GLib.SList" c:type="GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="objects_modified" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="objects" transfer-ownership="none">
            <type name="GLib.SList" c:type="GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="objects_removed" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="uids" transfer-ownership="none">
            <type name="GLib.SList" c:type="GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="progress">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="percent" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_client" c:identifier="e_book_client_view_get_client">
        <doc xml:whitespace="preserve">Returns the #EBookClient that this book view is monitoring.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #EBookClient.</doc>
          <type name="gpointer" c:type="gpointer*"/>
        </return-value>
      </method>
      <method name="is_running" c:identifier="e_book_client_view_is_running">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="set_fields_of_interest"
              c:identifier="e_book_client_view_set_fields_of_interest"
              throws="1">
        <doc xml:whitespace="preserve">Client can instruct server to which fields it is interested in only, thus
the server can return less data over the wire. The server can still return
complete objects, this is just a hint to it that the listed fields will
be used only. The UID field is returned always. Initial views has no fields
of interest and using %NULL for @fields_of_interest will unset any previous
changes.

Some backends can use summary information of its cache to create artifical
objects, which will omit stored object parsing. If this cannot be done then
it will simply return object as is stored in the cache.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="fields_of_interest" transfer-ownership="none">
            <doc xml:whitespace="preserve">List of field names in which the client is interested</doc>
            <type name="GLib.SList" c:type="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:whitespace="preserve">Sets the @flags which control the behaviour of @view.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:whitespace="preserve">the #EBookClientViewFlags for @view.</doc>
            <type name="BookClientViewFlags" c:type="EBookClientViewFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="start" c:identifier="e_book_client_view_start" throws="1">
        <doc xml:whitespace="preserve">Tells @view to start processing events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="stop" c:identifier="e_book_client_view_stop" throws="1">
        <doc xml:whitespace="preserve">Tells @view to stop processing events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <field name="parent">
        <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"/>
        </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"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="objects-modified" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="objects-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="progress" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BookClientViewClass"
            c:type="EBookClientViewClass"
            glib:is-gtype-struct-for="BookClientView">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="objects_added" introspectable="0">
        <callback name="objects_added" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="objects" transfer-ownership="none">
              <type name="GLib.SList" c:type="GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="objects_modified" introspectable="0">
        <callback name="objects_modified" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="objects" transfer-ownership="none">
              <type name="GLib.SList" c:type="GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="objects_removed" introspectable="0">
        <callback name="objects_removed" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="uids" transfer-ownership="none">
              <type name="GLib.SList" c:type="GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="progress">
        <callback name="progress">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="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="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="complete">
        <callback name="complete">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <bitfield name="BookClientViewFlags"
              version="3.4"
              c:type="EBookClientViewFlags">
      <doc xml:whitespace="preserve">Flags that control the behaviour of an #EBookClientView.</doc>
      <member name="none"
              value="0"
              c:identifier="E_BOOK_CLIENT_VIEW_FLAGS_NONE"/>
      <member name="notify_initial"
              value="1"
              c:identifier="E_BOOK_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL"/>
    </bitfield>
    <record name="BookClientViewPrivate"
            c:type="EBookClientViewPrivate"
            disguised="1">
    </record>
    <callback name="BookContactAsyncCallback"
              c:type="EBookContactAsyncCallback"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="contact" transfer-ownership="none">
          <type name="Contact" c:type="EContact*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookContactCallback" c:type="EBookContactCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <type name="BookStatus" c:type="EBookStatus"/>
        </parameter>
        <parameter name="contact" transfer-ownership="none">
          <type name="Contact" c:type="EContact*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookEListAsyncCallback"
              c:type="EBookEListAsyncCallback"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="list" transfer-ownership="none">
          <type name="EDataServer.List" c:type="EList*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookEListCallback" c:type="EBookEListCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <type name="BookStatus" c:type="EBookStatus"/>
        </parameter>
        <parameter name="list" transfer-ownership="none">
          <type name="EDataServer.List" c:type="EList*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookIdAsyncCallback"
              c:type="EBookIdAsyncCallback"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookIdCallback" c:type="EBookIdCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <type name="BookStatus" c:type="EBookStatus"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookListAsyncCallback"
              c:type="EBookListAsyncCallback"
              version="2.32"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="list" transfer-ownership="none">
          <type name="GLib.List" c:type="GList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookListCallback"
              c:type="EBookListCallback"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <type name="BookStatus" c:type="EBookStatus"/>
        </parameter>
        <parameter name="list" transfer-ownership="none">
          <type name="GLib.List" c:type="GList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BookOpenProgressCallback"
              c:type="EBookOpenProgressCallback"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="book" transfer-ownership="none">
          <type name="Book" c:type="EBook*"/>
        </parameter>
        <parameter name="status_message" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="percent" transfer-ownership="none">
          <type name="gshort" c:type="gshort"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="BookPrivate" c:type="EBookPrivate" disguised="1">
    </record>
    <record name="BookQuery"
            c:type="EBookQuery"
            glib:type-name="EBookQuery"
            glib:get-type="e_book_query_get_type"
            c:symbol-prefix="book_query">
      <method name="andv" c:identifier="e_book_query_andv" introspectable="0">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which is the logical AND of the queries specified.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="e_book_query_copy">
        <return-value transfer-ownership="full">
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
      </method>
      <method name="not" c:identifier="e_book_query_not">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which is the opposite of #q.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="unref" transfer-ownership="none">
            <doc xml:whitespace="preserve">if #TRUE, the new query takes ownership of the existing queries</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="orv" c:identifier="e_book_query_orv" introspectable="0">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which is the logical OR of the queries specified.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="e_book_query_ref">
        <doc xml:whitespace="preserve">Increment the reference count on @q.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">@q</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
      </method>
      <method name="to_string" c:identifier="e_book_query_to_string">
        <doc xml:whitespace="preserve">Return the string representation of @q.

finished with.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The string form of the query. This string should be freed when</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="unref" c:identifier="e_book_query_unref">
        <doc xml:whitespace="preserve">Decrement the reference count on @q. When the reference count reaches 0, @q
will be freed and any child queries will have e_book_query_unref() called.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <function name="and" c:identifier="e_book_query_and">
        <doc xml:whitespace="preserve">Create a new #EBookQuery which is the logical AND of the queries in #qs.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="nqs" transfer-ownership="none">
            <doc xml:whitespace="preserve">the number of queries to AND</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="qs" transfer-ownership="none">
            <doc xml:whitespace="preserve">pointer to an array of #EBookQuery items</doc>
            <type name="BookQuery" c:type="EBookQuery**"/>
          </parameter>
          <parameter name="unref" transfer-ownership="none">
            <doc xml:whitespace="preserve">if %TRUE, the new query takes ownership of the existing queries</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <function name="any_field_contains"
                c:identifier="e_book_query_any_field_contains">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests if any field contains @value.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="field_exists" c:identifier="e_book_query_field_exists">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests if the field @field exists.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="field" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </function>
      <function name="field_test" c:identifier="e_book_query_field_test">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests @field for @value using the test @test.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="field" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField to test</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
          <parameter name="test" transfer-ownership="none">
            <doc xml:whitespace="preserve">the test to apply</doc>
            <type name="BookQueryTest" c:type="EBookQueryTest"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">the value to test for</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="from_string" c:identifier="e_book_query_from_string">
        <doc xml:whitespace="preserve">Parse @query_string and return a new #EBookQuery representing it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery.</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="query_string" transfer-ownership="none">
            <doc xml:whitespace="preserve">the query</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="or" c:identifier="e_book_query_or">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which is the logical OR of the queries in #qs.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="nqs" transfer-ownership="none">
            <doc xml:whitespace="preserve">the number of queries to OR</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="qs" transfer-ownership="none">
            <doc xml:whitespace="preserve">pointer to an array of #EBookQuery items</doc>
            <type name="BookQuery" c:type="EBookQuery**"/>
          </parameter>
          <parameter name="unref" transfer-ownership="none">
            <doc xml:whitespace="preserve">if #TRUE, the new query takes ownership of the existing queries</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <function name="vcard_field_exists"
                c:identifier="e_book_query_vcard_field_exists">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests if the field @field exists. @field
should be a vCard field name, such as #FN or #X-MSN.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="field" transfer-ownership="none">
            <doc xml:whitespace="preserve">a field name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="vcard_field_test"
                c:identifier="e_book_query_vcard_field_test"
                version="2.22">
        <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests @field for @value using the test @test.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #EBookQuery</doc>
          <type name="BookQuery" c:type="EBookQuery*"/>
        </return-value>
        <parameters>
          <parameter name="field" transfer-ownership="none">
            <doc xml:whitespace="preserve">a EVCard field name to test</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="test" transfer-ownership="none">
            <doc xml:whitespace="preserve">the test to apply</doc>
            <type name="BookQueryTest" c:type="EBookQueryTest"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">the value to test for</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="BookQueryTest" c:type="EBookQueryTest">
      <member name="is" value="0" c:identifier="E_BOOK_QUERY_IS"/>
      <member name="contains" value="1" c:identifier="E_BOOK_QUERY_CONTAINS"/>
      <member name="begins_with"
              value="2"
              c:identifier="E_BOOK_QUERY_BEGINS_WITH"/>
      <member name="ends_with"
              value="3"
              c:identifier="E_BOOK_QUERY_ENDS_WITH"/>
    </enumeration>
    <enumeration name="BookStatus" c:type="EBookStatus">
      <member name="ok" value="0" c:identifier="E_BOOK_ERROR_OK"/>
      <member name="invalid_arg"
              value="1"
              c:identifier="E_BOOK_ERROR_INVALID_ARG"/>
      <member name="busy" value="2" c:identifier="E_BOOK_ERROR_BUSY"/>
      <member name="repository_offline"
              value="3"
              c:identifier="E_BOOK_ERROR_REPOSITORY_OFFLINE"/>
      <member name="no_such_book"
              value="4"
              c:identifier="E_BOOK_ERROR_NO_SUCH_BOOK"/>
      <member name="no_self_contact"
              value="5"
              c:identifier="E_BOOK_ERROR_NO_SELF_CONTACT"/>
      <member name="source_not_loaded"
              value="6"
              c:identifier="E_BOOK_ERROR_SOURCE_NOT_LOADED"/>
      <member name="source_already_loaded"
              value="7"
              c:identifier="E_BOOK_ERROR_SOURCE_ALREADY_LOADED"/>
      <member name="permission_denied"
              value="8"
              c:identifier="E_BOOK_ERROR_PERMISSION_DENIED"/>
      <member name="contact_not_found"
              value="9"
              c:identifier="E_BOOK_ERROR_CONTACT_NOT_FOUND"/>
      <member name="contact_id_already_exists"
              value="10"
              c:identifier="E_BOOK_ERROR_CONTACT_ID_ALREADY_EXISTS"/>
      <member name="protocol_not_supported"
              value="11"
              c:identifier="E_BOOK_ERROR_PROTOCOL_NOT_SUPPORTED"/>
      <member name="cancelled"
              value="12"
              c:identifier="E_BOOK_ERROR_CANCELLED"/>
      <member name="could_not_cancel"
              value="13"
              c:identifier="E_BOOK_ERROR_COULD_NOT_CANCEL"/>
      <member name="authentication_failed"
              value="14"
              c:identifier="E_BOOK_ERROR_AUTHENTICATION_FAILED"/>
      <member name="authentication_required"
              value="15"
              c:identifier="E_BOOK_ERROR_AUTHENTICATION_REQUIRED"/>
      <member name="tls_not_available"
              value="16"
              c:identifier="E_BOOK_ERROR_TLS_NOT_AVAILABLE"/>
      <member name="dbus_exception"
              value="17"
              c:identifier="E_BOOK_ERROR_DBUS_EXCEPTION"/>
      <member name="no_such_source"
              value="18"
              c:identifier="E_BOOK_ERROR_NO_SUCH_SOURCE"/>
      <member name="offline_unavailable"
              value="19"
              c:identifier="E_BOOK_ERROR_OFFLINE_UNAVAILABLE"/>
      <member name="other_error"
              value="20"
              c:identifier="E_BOOK_ERROR_OTHER_ERROR"/>
      <member name="invalid_server_version"
              value="21"
              c:identifier="E_BOOK_ERROR_INVALID_SERVER_VERSION"/>
      <member name="unsupported_authentication_method"
              value="22"
              c:identifier="E_BOOK_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD"/>
      <member name="no_space" value="23" c:identifier="E_BOOK_ERROR_NO_SPACE"/>
      <member name="not_supported"
              value="24"
              c:identifier="E_BOOK_ERROR_NOT_SUPPORTED"/>
    </enumeration>
    <class name="BookView"
           c:symbol-prefix="book_view"
           c:type="EBookView"
           parent="GObject.Object"
           glib:type-name="EBookView"
           glib:get-type="e_book_view_get_type"
           glib:type-struct="BookViewClass">
      <virtual-method name="contacts_added" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contacts" transfer-ownership="none">
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="contacts_changed" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contacts" transfer-ownership="none">
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="contacts_removed" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ids" transfer-ownership="none">
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="sequence_complete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="status" transfer-ownership="none">
            <type name="BookViewStatus" c:type="EBookViewStatus"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="status_message">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="view_complete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="status" transfer-ownership="none">
            <type name="BookViewStatus" c:type="EBookViewStatus"/>
          </parameter>
          <parameter name="error_msg" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_book"
              c:identifier="e_book_view_get_book"
              version="2.22">
        <doc xml:whitespace="preserve">Returns the #EBook that this book view is monitoring.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #EBook.</doc>
          <type name="gpointer" c:type="gpointer*"/>
        </return-value>
      </method>
      <method name="start" c:identifier="e_book_view_start">
        <doc xml:whitespace="preserve">Tells @book_view to start processing events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="stop" c:identifier="e_book_view_stop">
        <doc xml:whitespace="preserve">Tells @book_view to stop processing events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="BookViewPrivate" c:type="EBookViewPrivate*"/>
      </field>
      <glib:signal name="contacts-added" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="contacts-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="contacts-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="sequence-complete" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="status-message" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="view-complete" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BookViewClass"
            c:type="EBookViewClass"
            glib:is-gtype-struct-for="BookView">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="contacts_changed" introspectable="0">
        <callback name="contacts_changed" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book_view" transfer-ownership="none">
              <type name="BookView" c:type="EBookView*"/>
            </parameter>
            <parameter name="contacts" transfer-ownership="none">
              <type name="GLib.List" c:type="GList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="contacts_removed" introspectable="0">
        <callback name="contacts_removed" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book_view" transfer-ownership="none">
              <type name="BookView" c:type="EBookView*"/>
            </parameter>
            <parameter name="ids" transfer-ownership="none">
              <type name="GLib.List" c:type="GList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="contacts_added" introspectable="0">
        <callback name="contacts_added" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book_view" transfer-ownership="none">
              <type name="BookView" c:type="EBookView*"/>
            </parameter>
            <parameter name="contacts" transfer-ownership="none">
              <type name="GLib.List" c:type="GList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="sequence_complete">
        <callback name="sequence_complete">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book_view" transfer-ownership="none">
              <type name="BookView" c:type="EBookView*"/>
            </parameter>
            <parameter name="status" transfer-ownership="none">
              <type name="BookViewStatus" c:type="EBookViewStatus"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="view_complete">
        <callback name="view_complete">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book_view" transfer-ownership="none">
              <type name="BookView" c:type="EBookView*"/>
            </parameter>
            <parameter name="status" transfer-ownership="none">
              <type name="BookViewStatus" c:type="EBookViewStatus"/>
            </parameter>
            <parameter name="error_msg" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="status_message">
        <callback name="status_message">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="book_view" transfer-ownership="none">
              <type name="BookView" c:type="EBookView*"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_ebook_reserved0" introspectable="0">
        <callback name="_ebook_reserved0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved1" introspectable="0">
        <callback name="_ebook_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved2" introspectable="0">
        <callback name="_ebook_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved3" introspectable="0">
        <callback name="_ebook_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved4" introspectable="0">
        <callback name="_ebook_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="BookViewPrivate" c:type="EBookViewPrivate" disguised="1">
    </record>
    <enumeration name="BookViewStatus" c:type="EBookViewStatus">
      <member name="status_ok" value="0" c:identifier="E_BOOK_VIEW_STATUS_OK"/>
      <member name="status_time_limit_exceeded"
              value="1"
              c:identifier="E_BOOK_VIEW_STATUS_TIME_LIMIT_EXCEEDED"/>
      <member name="status_size_limit_exceeded"
              value="2"
              c:identifier="E_BOOK_VIEW_STATUS_SIZE_LIMIT_EXCEEDED"/>
      <member name="error_invalid_query"
              value="3"
              c:identifier="E_BOOK_VIEW_ERROR_INVALID_QUERY"/>
      <member name="error_query_refused"
              value="4"
              c:identifier="E_BOOK_VIEW_ERROR_QUERY_REFUSED"/>
      <member name="error_other_error"
              value="5"
              c:identifier="E_BOOK_VIEW_ERROR_OTHER_ERROR"/>
    </enumeration>
    <class name="Contact"
           c:symbol-prefix="contact"
           c:type="EContact"
           parent="VCard"
           glib:type-name="EContact"
           glib:get-type="e_contact_get_type"
           glib:type-struct="ContactClass">
      <constructor name="new" c:identifier="e_contact_new">
        <doc xml:whitespace="preserve">Creates a new, blank #EContact.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContact.</doc>
          <type name="Contact" c:type="EContact*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_vcard"
                   c:identifier="e_contact_new_from_vcard">
        <doc xml:whitespace="preserve">Creates a new #EContact based on a vcard.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContact.</doc>
          <type name="Contact" c:type="EContact*"/>
        </return-value>
        <parameters>
          <parameter name="vcard" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing a vcard</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_vcard_with_uid"
                   c:identifier="e_contact_new_from_vcard_with_uid"
                   version="3.4">
        <doc xml:whitespace="preserve">Creates a new #EContact based on a vcard and a predefined UID.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContact.</doc>
          <type name="Contact" c:type="EContact*"/>
        </return-value>
        <parameters>
          <parameter name="vcard" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing a vcard</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:whitespace="preserve">a contact UID</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="field_id" c:identifier="e_contact_field_id">
        <doc xml:whitespace="preserve">Gets the #EContactField corresponding to the @field_name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An #EContactField corresponding to @field_name, or %0 if it doesn't exist.</doc>
          <type name="ContactField" c:type="EContactField"/>
        </return-value>
        <parameters>
          <parameter name="field_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing a contact field</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="field_id_from_vcard"
                c:identifier="e_contact_field_id_from_vcard"
                version="2.26">
        <doc xml:whitespace="preserve">Gets the #EContactField corresponding to the @vcard_field.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An #EContactField corresponding to @vcard_field, or %0 if it doesn't exist.</doc>
          <type name="ContactField" c:type="EContactField"/>
        </return-value>
        <parameters>
          <parameter name="vcard_field" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing a vCard field</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="field_name" c:identifier="e_contact_field_name">
        <doc xml:whitespace="preserve">Gets the string representation of @field_id.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The string representation of @field_id, or %NULL if it doesn't exist.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </function>
      <function name="pretty_name" c:identifier="e_contact_pretty_name">
        <doc xml:whitespace="preserve">Gets a human-readable, translated string representation
of @field_id.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The human-readable representation of @field_id, or %NULL if it doesn't exist.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </function>
      <function name="vcard_attribute"
                c:identifier="e_contact_vcard_attribute">
        <doc xml:whitespace="preserve">Gets the vcard attribute corresponding to @field_id, as a string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The vcard attribute corresponding to @field_id, or %NULL if it doesn't exist.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </function>
      <method name="duplicate" c:identifier="e_contact_duplicate">
        <doc xml:whitespace="preserve">Creates a copy of @contact.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContact identical to @contact.</doc>
          <type name="Contact" c:type="EContact*"/>
        </return-value>
      </method>
      <method name="get" c:identifier="e_contact_get">
        <doc xml:whitespace="preserve">Gets the value of @contact's field specified by @field_id.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">Depends on the field's type, owned by the caller. This may be %NULL if the field isn't set.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes" c:identifier="e_contact_get_attributes">
        <doc xml:whitespace="preserve">Gets a list of the vcard attributes for @contact's @field_id.

to #EVCardAttribute, owned by the caller.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GList of pointers</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="VCardAttribute"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_const" c:identifier="e_contact_get_const">
        <doc xml:whitespace="preserve">Gets the value of @contact's field specified by @field_id, caching
the result so it can be freed later.

#EContact.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">Depends on the field's type, owned by the</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
        </parameters>
      </method>
      <method name="inline_local_photos"
              c:identifier="e_contact_inline_local_photos"
              version="3.4"
              throws="1">
        <doc xml:whitespace="preserve">Tries to modify any #EContactPhoto fields which are
stored on the local file system as type %E_CONTACT_PHOTO_TYPE_URI
to be inlined and stored as %E_CONTACT_PHOTO_TYPE_INLINED instead.

and @error is set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if there were no errors, upon error %FALSE is returned</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="set" c:identifier="e_contact_set">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_attributes" c:identifier="e_contact_set_attributes">
        <doc xml:whitespace="preserve">Sets the vcard attributes for @contact's @field_id.
Attributes are added to the contact in the same order as they are in @attributes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="field_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactField</doc>
            <type name="ContactField" c:type="EContactField"/>
          </parameter>
          <parameter name="attributes" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GList of pointers to #EVCardAttribute</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="VCardAttribute"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <property name="Rev" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="address" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="address-home" writable="1" transfer-ownership="none">
        <type name="ContactAddress"/>
      </property>
      <property name="address-label-home"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="address-label-other"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="address-label-work"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="address-other" writable="1" transfer-ownership="none">
        <type name="ContactAddress"/>
      </property>
      <property name="address-work" writable="1" transfer-ownership="none">
        <type name="ContactAddress"/>
      </property>
      <property name="anniversary" writable="1" transfer-ownership="none">
        <type name="ContactDate"/>
      </property>
      <property name="assistant" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="assistant-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="birth-date" writable="1" transfer-ownership="none">
        <type name="ContactDate"/>
      </property>
      <property name="blog-url" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="book-uri" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="business-fax" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="business-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="business-phone-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="callback-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="caluri" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="car-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="categories" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="category-list" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="company-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="email" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="email-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="email-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="email-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="email-4" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="family-name" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="fburl" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="file-as" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="full-name" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="geo" writable="1" transfer-ownership="none">
        <type name="ContactGeo"/>
      </property>
      <property name="given-name" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="home-fax" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="home-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="home-phone-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="homepage-url" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="icscalendar" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="id" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-aim" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-aim-home-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-aim-home-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-aim-home-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-aim-work-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-aim-work-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-aim-work-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-gadugadu" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-gadugadu-home-1"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-gadugadu-home-2"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-gadugadu-home-3"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-gadugadu-work-1"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-gadugadu-work-2"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-gadugadu-work-3"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-google-talk" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-google-talk-home-1"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-google-talk-home-2"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-google-talk-home-3"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-google-talk-work-1"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-google-talk-work-2"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-google-talk-work-3"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-groupwise" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-groupwise-home-1"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-groupwise-home-2"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-groupwise-home-3"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-groupwise-work-1"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-groupwise-work-2"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-groupwise-work-3"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-icq" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-icq-home-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-icq-home-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-icq-home-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-icq-work-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-icq-work-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-icq-work-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-jabber" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-jabber-home-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-jabber-home-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-jabber-home-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-jabber-work-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-jabber-work-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-jabber-work-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-msn" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-msn-home-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-msn-home-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-msn-home-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-msn-work-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-msn-work-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-msn-work-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-skype" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-skype-home-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-skype-home-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-skype-home-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-skype-work-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-skype-work-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-skype-work-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-yahoo" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="im-yahoo-home-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-yahoo-home-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-yahoo-home-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-yahoo-work-1" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-yahoo-work-2" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="im-yahoo-work-3" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="isdn-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="list" writable="1" transfer-ownership="none">
        <type name="gboolean"/>
      </property>
      <property name="list-show-addresses"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean"/>
      </property>
      <property name="logo" writable="1" transfer-ownership="none">
        <type name="ContactPhoto"/>
      </property>
      <property name="mailer" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="manager" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="mobile-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="name" writable="1" transfer-ownership="none">
        <type name="ContactName"/>
      </property>
      <property name="name-or-org" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="nickname" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="note" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="office" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="org" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="org-unit" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="other-fax" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="other-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="pager" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="phone" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="photo" writable="1" transfer-ownership="none">
        <type name="ContactPhoto"/>
      </property>
      <property name="primary-phone" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="radio" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="role" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="sip" writable="1" transfer-ownership="none">
        <type name="gpointer"/>
      </property>
      <property name="spouse" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="telex" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="title" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="tty" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="video-url" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="wants-html" writable="1" transfer-ownership="none">
        <type name="gboolean"/>
      </property>
      <property name="x509Cert" writable="1" transfer-ownership="none">
        <type name="ContactCert"/>
      </property>
      <field name="parent">
        <type name="VCard" c:type="EVCard"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ContactPrivate" c:type="EContactPrivate*"/>
      </field>
    </class>
    <record name="ContactAddress"
            c:type="EContactAddress"
            glib:type-name="EContactAddress"
            glib:get-type="e_contact_address_get_type"
            c:symbol-prefix="contact_address">
      <field name="address_format" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="po" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="ext" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="street" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="locality" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="region" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="code" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="country" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <constructor name="new"
                   c:identifier="e_contact_address_new"
                   version="3.2">
        <doc xml:whitespace="preserve">Creates a new #EContactAddress struct.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactAddress struct.</doc>
          <type name="ContactAddress" c:type="EContactAddress*"/>
        </return-value>
      </constructor>
      <method name="free" c:identifier="e_contact_address_free">
        <doc xml:whitespace="preserve">Frees the @address struct and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="ContactCert"
            c:type="EContactCert"
            glib:type-name="EContactCert"
            glib:get-type="e_contact_cert_get_type"
            c:symbol-prefix="contact_cert">
      <field name="length" writable="1">
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="data" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="free" c:identifier="e_contact_cert_free">
        <doc xml:whitespace="preserve">Frees the @cert struct and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="ContactClass"
            c:type="EContactClass"
            glib:is-gtype-struct-for="Contact">
      <field name="parent_class">
        <type name="VCardClass" c:type="EVCardClass"/>
      </field>
      <field name="_ebook_reserved0" introspectable="0">
        <callback name="_ebook_reserved0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved1" introspectable="0">
        <callback name="_ebook_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved2" introspectable="0">
        <callback name="_ebook_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved3" introspectable="0">
        <callback name="_ebook_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved4" introspectable="0">
        <callback name="_ebook_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="ContactDate"
            c:type="EContactDate"
            glib:type-name="EContactDate"
            glib:get-type="e_contact_date_get_type"
            c:symbol-prefix="contact_date">
      <field name="year" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="month" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="day" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <constructor name="new" c:identifier="e_contact_date_new">
        <doc xml:whitespace="preserve">Creates a new #EContactDate struct.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactDate struct.</doc>
          <type name="ContactDate" c:type="EContactDate*"/>
        </return-value>
      </constructor>
      <method name="equal" c:identifier="e_contact_date_equal">
        <doc xml:whitespace="preserve">Checks if @dt1 and @dt2 are the same date.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @dt1 and @dt2 are equal, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="dt2" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContactDate</doc>
            <type name="ContactDate" c:type="EContactDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="e_contact_date_free">
        <doc xml:whitespace="preserve">Frees the @date struct and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="to_string" c:identifier="e_contact_date_to_string">
        <doc xml:whitespace="preserve">Generates a date string in the format YYYY-MM-DD based
on the values of @dt.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A date string, owned by the caller.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <function name="from_string" c:identifier="e_contact_date_from_string">
        <doc xml:whitespace="preserve">Creates a new #EContactDate based on @str.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactDate struct.</doc>
          <type name="ContactDate" c:type="EContactDate*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:whitespace="preserve">a date string in the format YYYY-MM-DD or YYYYMMDD</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="ContactField" c:type="EContactField">
      <member name="uid" value="1" c:identifier="E_CONTACT_UID"/>
      <member name="file_as" value="2" c:identifier="E_CONTACT_FILE_AS"/>
      <member name="book_uri" value="3" c:identifier="E_CONTACT_BOOK_URI"/>
      <member name="full_name" value="4" c:identifier="E_CONTACT_FULL_NAME"/>
      <member name="given_name" value="5" c:identifier="E_CONTACT_GIVEN_NAME"/>
      <member name="family_name"
              value="6"
              c:identifier="E_CONTACT_FAMILY_NAME"/>
      <member name="nickname" value="7" c:identifier="E_CONTACT_NICKNAME"/>
      <member name="email_1" value="8" c:identifier="E_CONTACT_EMAIL_1"/>
      <member name="email_2" value="9" c:identifier="E_CONTACT_EMAIL_2"/>
      <member name="email_3" value="10" c:identifier="E_CONTACT_EMAIL_3"/>
      <member name="email_4" value="11" c:identifier="E_CONTACT_EMAIL_4"/>
      <member name="mailer" value="12" c:identifier="E_CONTACT_MAILER"/>
      <member name="address_label_home"
              value="13"
              c:identifier="E_CONTACT_ADDRESS_LABEL_HOME"/>
      <member name="address_label_work"
              value="14"
              c:identifier="E_CONTACT_ADDRESS_LABEL_WORK"/>
      <member name="address_label_other"
              value="15"
              c:identifier="E_CONTACT_ADDRESS_LABEL_OTHER"/>
      <member name="phone_assistant"
              value="16"
              c:identifier="E_CONTACT_PHONE_ASSISTANT"/>
      <member name="phone_business"
              value="17"
              c:identifier="E_CONTACT_PHONE_BUSINESS"/>
      <member name="phone_business_2"
              value="18"
              c:identifier="E_CONTACT_PHONE_BUSINESS_2"/>
      <member name="phone_business_fax"
              value="19"
              c:identifier="E_CONTACT_PHONE_BUSINESS_FAX"/>
      <member name="phone_callback"
              value="20"
              c:identifier="E_CONTACT_PHONE_CALLBACK"/>
      <member name="phone_car" value="21" c:identifier="E_CONTACT_PHONE_CAR"/>
      <member name="phone_company"
              value="22"
              c:identifier="E_CONTACT_PHONE_COMPANY"/>
      <member name="phone_home"
              value="23"
              c:identifier="E_CONTACT_PHONE_HOME"/>
      <member name="phone_home_2"
              value="24"
              c:identifier="E_CONTACT_PHONE_HOME_2"/>
      <member name="phone_home_fax"
              value="25"
              c:identifier="E_CONTACT_PHONE_HOME_FAX"/>
      <member name="phone_isdn"
              value="26"
              c:identifier="E_CONTACT_PHONE_ISDN"/>
      <member name="phone_mobile"
              value="27"
              c:identifier="E_CONTACT_PHONE_MOBILE"/>
      <member name="phone_other"
              value="28"
              c:identifier="E_CONTACT_PHONE_OTHER"/>
      <member name="phone_other_fax"
              value="29"
              c:identifier="E_CONTACT_PHONE_OTHER_FAX"/>
      <member name="phone_pager"
              value="30"
              c:identifier="E_CONTACT_PHONE_PAGER"/>
      <member name="phone_primary"
              value="31"
              c:identifier="E_CONTACT_PHONE_PRIMARY"/>
      <member name="phone_radio"
              value="32"
              c:identifier="E_CONTACT_PHONE_RADIO"/>
      <member name="phone_telex"
              value="33"
              c:identifier="E_CONTACT_PHONE_TELEX"/>
      <member name="phone_ttytdd"
              value="34"
              c:identifier="E_CONTACT_PHONE_TTYTDD"/>
      <member name="org" value="35" c:identifier="E_CONTACT_ORG"/>
      <member name="org_unit" value="36" c:identifier="E_CONTACT_ORG_UNIT"/>
      <member name="office" value="37" c:identifier="E_CONTACT_OFFICE"/>
      <member name="title" value="38" c:identifier="E_CONTACT_TITLE"/>
      <member name="role" value="39" c:identifier="E_CONTACT_ROLE"/>
      <member name="manager" value="40" c:identifier="E_CONTACT_MANAGER"/>
      <member name="assistant" value="41" c:identifier="E_CONTACT_ASSISTANT"/>
      <member name="homepage_url"
              value="42"
              c:identifier="E_CONTACT_HOMEPAGE_URL"/>
      <member name="blog_url" value="43" c:identifier="E_CONTACT_BLOG_URL"/>
      <member name="categories"
              value="44"
              c:identifier="E_CONTACT_CATEGORIES"/>
      <member name="calendar_uri"
              value="45"
              c:identifier="E_CONTACT_CALENDAR_URI"/>
      <member name="freebusy_url"
              value="46"
              c:identifier="E_CONTACT_FREEBUSY_URL"/>
      <member name="ics_calendar"
              value="47"
              c:identifier="E_CONTACT_ICS_CALENDAR"/>
      <member name="video_url" value="48" c:identifier="E_CONTACT_VIDEO_URL"/>
      <member name="spouse" value="49" c:identifier="E_CONTACT_SPOUSE"/>
      <member name="note" value="50" c:identifier="E_CONTACT_NOTE"/>
      <member name="im_aim_home_1"
              value="51"
              c:identifier="E_CONTACT_IM_AIM_HOME_1"/>
      <member name="im_aim_home_2"
              value="52"
              c:identifier="E_CONTACT_IM_AIM_HOME_2"/>
      <member name="im_aim_home_3"
              value="53"
              c:identifier="E_CONTACT_IM_AIM_HOME_3"/>
      <member name="im_aim_work_1"
              value="54"
              c:identifier="E_CONTACT_IM_AIM_WORK_1"/>
      <member name="im_aim_work_2"
              value="55"
              c:identifier="E_CONTACT_IM_AIM_WORK_2"/>
      <member name="im_aim_work_3"
              value="56"
              c:identifier="E_CONTACT_IM_AIM_WORK_3"/>
      <member name="im_groupwise_home_1"
              value="57"
              c:identifier="E_CONTACT_IM_GROUPWISE_HOME_1"/>
      <member name="im_groupwise_home_2"
              value="58"
              c:identifier="E_CONTACT_IM_GROUPWISE_HOME_2"/>
      <member name="im_groupwise_home_3"
              value="59"
              c:identifier="E_CONTACT_IM_GROUPWISE_HOME_3"/>
      <member name="im_groupwise_work_1"
              value="60"
              c:identifier="E_CONTACT_IM_GROUPWISE_WORK_1"/>
      <member name="im_groupwise_work_2"
              value="61"
              c:identifier="E_CONTACT_IM_GROUPWISE_WORK_2"/>
      <member name="im_groupwise_work_3"
              value="62"
              c:identifier="E_CONTACT_IM_GROUPWISE_WORK_3"/>
      <member name="im_jabber_home_1"
              value="63"
              c:identifier="E_CONTACT_IM_JABBER_HOME_1"/>
      <member name="im_jabber_home_2"
              value="64"
              c:identifier="E_CONTACT_IM_JABBER_HOME_2"/>
      <member name="im_jabber_home_3"
              value="65"
              c:identifier="E_CONTACT_IM_JABBER_HOME_3"/>
      <member name="im_jabber_work_1"
              value="66"
              c:identifier="E_CONTACT_IM_JABBER_WORK_1"/>
      <member name="im_jabber_work_2"
              value="67"
              c:identifier="E_CONTACT_IM_JABBER_WORK_2"/>
      <member name="im_jabber_work_3"
              value="68"
              c:identifier="E_CONTACT_IM_JABBER_WORK_3"/>
      <member name="im_yahoo_home_1"
              value="69"
              c:identifier="E_CONTACT_IM_YAHOO_HOME_1"/>
      <member name="im_yahoo_home_2"
              value="70"
              c:identifier="E_CONTACT_IM_YAHOO_HOME_2"/>
      <member name="im_yahoo_home_3"
              value="71"
              c:identifier="E_CONTACT_IM_YAHOO_HOME_3"/>
      <member name="im_yahoo_work_1"
              value="72"
              c:identifier="E_CONTACT_IM_YAHOO_WORK_1"/>
      <member name="im_yahoo_work_2"
              value="73"
              c:identifier="E_CONTACT_IM_YAHOO_WORK_2"/>
      <member name="im_yahoo_work_3"
              value="74"
              c:identifier="E_CONTACT_IM_YAHOO_WORK_3"/>
      <member name="im_msn_home_1"
              value="75"
              c:identifier="E_CONTACT_IM_MSN_HOME_1"/>
      <member name="im_msn_home_2"
              value="76"
              c:identifier="E_CONTACT_IM_MSN_HOME_2"/>
      <member name="im_msn_home_3"
              value="77"
              c:identifier="E_CONTACT_IM_MSN_HOME_3"/>
      <member name="im_msn_work_1"
              value="78"
              c:identifier="E_CONTACT_IM_MSN_WORK_1"/>
      <member name="im_msn_work_2"
              value="79"
              c:identifier="E_CONTACT_IM_MSN_WORK_2"/>
      <member name="im_msn_work_3"
              value="80"
              c:identifier="E_CONTACT_IM_MSN_WORK_3"/>
      <member name="im_icq_home_1"
              value="81"
              c:identifier="E_CONTACT_IM_ICQ_HOME_1"/>
      <member name="im_icq_home_2"
              value="82"
              c:identifier="E_CONTACT_IM_ICQ_HOME_2"/>
      <member name="im_icq_home_3"
              value="83"
              c:identifier="E_CONTACT_IM_ICQ_HOME_3"/>
      <member name="im_icq_work_1"
              value="84"
              c:identifier="E_CONTACT_IM_ICQ_WORK_1"/>
      <member name="im_icq_work_2"
              value="85"
              c:identifier="E_CONTACT_IM_ICQ_WORK_2"/>
      <member name="im_icq_work_3"
              value="86"
              c:identifier="E_CONTACT_IM_ICQ_WORK_3"/>
      <member name="rev" value="87" c:identifier="E_CONTACT_REV"/>
      <member name="name_or_org"
              value="88"
              c:identifier="E_CONTACT_NAME_OR_ORG"/>
      <member name="address" value="89" c:identifier="E_CONTACT_ADDRESS"/>
      <member name="address_home"
              value="90"
              c:identifier="E_CONTACT_ADDRESS_HOME"/>
      <member name="address_work"
              value="91"
              c:identifier="E_CONTACT_ADDRESS_WORK"/>
      <member name="address_other"
              value="92"
              c:identifier="E_CONTACT_ADDRESS_OTHER"/>
      <member name="category_list"
              value="93"
              c:identifier="E_CONTACT_CATEGORY_LIST"/>
      <member name="photo" value="94" c:identifier="E_CONTACT_PHOTO"/>
      <member name="logo" value="95" c:identifier="E_CONTACT_LOGO"/>
      <member name="name" value="96" c:identifier="E_CONTACT_NAME"/>
      <member name="email" value="97" c:identifier="E_CONTACT_EMAIL"/>
      <member name="im_aim" value="98" c:identifier="E_CONTACT_IM_AIM"/>
      <member name="im_groupwise"
              value="99"
              c:identifier="E_CONTACT_IM_GROUPWISE"/>
      <member name="im_jabber" value="100" c:identifier="E_CONTACT_IM_JABBER"/>
      <member name="im_yahoo" value="101" c:identifier="E_CONTACT_IM_YAHOO"/>
      <member name="im_msn" value="102" c:identifier="E_CONTACT_IM_MSN"/>
      <member name="im_icq" value="103" c:identifier="E_CONTACT_IM_ICQ"/>
      <member name="wants_html"
              value="104"
              c:identifier="E_CONTACT_WANTS_HTML"/>
      <member name="is_list" value="105" c:identifier="E_CONTACT_IS_LIST"/>
      <member name="list_show_addresses"
              value="106"
              c:identifier="E_CONTACT_LIST_SHOW_ADDRESSES"/>
      <member name="birth_date"
              value="107"
              c:identifier="E_CONTACT_BIRTH_DATE"/>
      <member name="anniversary"
              value="108"
              c:identifier="E_CONTACT_ANNIVERSARY"/>
      <member name="x509_cert" value="109" c:identifier="E_CONTACT_X509_CERT"/>
      <member name="im_gadugadu_home_1"
              value="110"
              c:identifier="E_CONTACT_IM_GADUGADU_HOME_1"/>
      <member name="im_gadugadu_home_2"
              value="111"
              c:identifier="E_CONTACT_IM_GADUGADU_HOME_2"/>
      <member name="im_gadugadu_home_3"
              value="112"
              c:identifier="E_CONTACT_IM_GADUGADU_HOME_3"/>
      <member name="im_gadugadu_work_1"
              value="113"
              c:identifier="E_CONTACT_IM_GADUGADU_WORK_1"/>
      <member name="im_gadugadu_work_2"
              value="114"
              c:identifier="E_CONTACT_IM_GADUGADU_WORK_2"/>
      <member name="im_gadugadu_work_3"
              value="115"
              c:identifier="E_CONTACT_IM_GADUGADU_WORK_3"/>
      <member name="im_gadugadu"
              value="116"
              c:identifier="E_CONTACT_IM_GADUGADU"/>
      <member name="geo" value="117" c:identifier="E_CONTACT_GEO"/>
      <member name="tel" value="118" c:identifier="E_CONTACT_TEL"/>
      <member name="im_skype_home_1"
              value="119"
              c:identifier="E_CONTACT_IM_SKYPE_HOME_1"/>
      <member name="im_skype_home_2"
              value="120"
              c:identifier="E_CONTACT_IM_SKYPE_HOME_2"/>
      <member name="im_skype_home_3"
              value="121"
              c:identifier="E_CONTACT_IM_SKYPE_HOME_3"/>
      <member name="im_skype_work_1"
              value="122"
              c:identifier="E_CONTACT_IM_SKYPE_WORK_1"/>
      <member name="im_skype_work_2"
              value="123"
              c:identifier="E_CONTACT_IM_SKYPE_WORK_2"/>
      <member name="im_skype_work_3"
              value="124"
              c:identifier="E_CONTACT_IM_SKYPE_WORK_3"/>
      <member name="im_skype" value="125" c:identifier="E_CONTACT_IM_SKYPE"/>
      <member name="sip" value="126" c:identifier="E_CONTACT_SIP"/>
      <member name="im_google_talk_home_1"
              value="127"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK_HOME_1"/>
      <member name="im_google_talk_home_2"
              value="128"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK_HOME_2"/>
      <member name="im_google_talk_home_3"
              value="129"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK_HOME_3"/>
      <member name="im_google_talk_work_1"
              value="130"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK_WORK_1"/>
      <member name="im_google_talk_work_2"
              value="131"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK_WORK_2"/>
      <member name="im_google_talk_work_3"
              value="132"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK_WORK_3"/>
      <member name="im_google_talk"
              value="133"
              c:identifier="E_CONTACT_IM_GOOGLE_TALK"/>
      <member name="field_last"
              value="134"
              c:identifier="E_CONTACT_FIELD_LAST"/>
      <member name="field_first"
              value="1"
              c:identifier="E_CONTACT_FIELD_FIRST"/>
      <member name="last_simple_string"
              value="88"
              c:identifier="E_CONTACT_LAST_SIMPLE_STRING"/>
      <member name="first_phone_id"
              value="16"
              c:identifier="E_CONTACT_FIRST_PHONE_ID"/>
      <member name="last_phone_id"
              value="34"
              c:identifier="E_CONTACT_LAST_PHONE_ID"/>
      <member name="first_email_id"
              value="8"
              c:identifier="E_CONTACT_FIRST_EMAIL_ID"/>
      <member name="last_email_id"
              value="11"
              c:identifier="E_CONTACT_LAST_EMAIL_ID"/>
      <member name="first_address_id"
              value="90"
              c:identifier="E_CONTACT_FIRST_ADDRESS_ID"/>
      <member name="last_address_id"
              value="92"
              c:identifier="E_CONTACT_LAST_ADDRESS_ID"/>
      <member name="first_label_id"
              value="13"
              c:identifier="E_CONTACT_FIRST_LABEL_ID"/>
      <member name="last_label_id"
              value="15"
              c:identifier="E_CONTACT_LAST_LABEL_ID"/>
    </enumeration>
    <record name="ContactGeo"
            c:type="EContactGeo"
            version="1.12"
            glib:type-name="EContactGeo"
            glib:get-type="e_contact_geo_get_type"
            c:symbol-prefix="contact_geo">
      <field name="latitude" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="longitude" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <method name="free" c:identifier="e_contact_geo_free" version="1.12">
        <doc xml:whitespace="preserve">Frees the @geo struct and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="ContactName"
            c:type="EContactName"
            glib:type-name="EContactName"
            glib:get-type="e_contact_name_get_type"
            c:symbol-prefix="contact_name">
      <field name="family" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="given" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="additional" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="prefixes" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="suffixes" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <constructor name="new" c:identifier="e_contact_name_new">
        <doc xml:whitespace="preserve">Creates a new #EContactName struct.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactName struct.</doc>
          <type name="ContactName" c:type="EContactName*"/>
        </return-value>
      </constructor>
      <method name="copy" c:identifier="e_contact_name_copy">
        <doc xml:whitespace="preserve">Creates a copy of @n.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactName identical to @n.</doc>
          <type name="ContactName" c:type="EContactName*"/>
        </return-value>
      </method>
      <method name="free" c:identifier="e_contact_name_free">
        <doc xml:whitespace="preserve">Frees @name and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="to_string" c:identifier="e_contact_name_to_string">
        <doc xml:whitespace="preserve">Generates a string representation of @name.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The string representation of @name.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <function name="from_string" c:identifier="e_contact_name_from_string">
        <doc xml:whitespace="preserve">Creates a new #EContactName based on the parsed @name_str.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactName struct.</doc>
          <type name="ContactName" c:type="EContactName*"/>
        </return-value>
        <parameters>
          <parameter name="name_str" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing a contact's full name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="ContactPhoto"
            c:type="EContactPhoto"
            glib:type-name="EContactPhoto"
            glib:get-type="e_contact_photo_get_type"
            c:symbol-prefix="contact_photo">
      <field name="type" writable="1">
        <type name="ContactPhotoType" c:type="EContactPhotoType"/>
      </field>
      <union name="data" c:type="data">
        <record name="inlined" c:type="inlined">
          <field name="mime_type" writable="1">
            <type name="utf8" c:type="gchar*"/>
          </field>
          <field name="length" writable="1">
            <type name="gsize" c:type="gsize"/>
          </field>
          <field name="data" writable="1">
            <type name="guint8" c:type="guchar*"/>
          </field>
        </record>
        <field name="uri" writable="1">
          <type name="utf8" c:type="gchar*"/>
        </field>
      </union>
      <constructor name="new" c:identifier="e_contact_photo_new" version="3.2">
        <doc xml:whitespace="preserve">Creates a new #EContactPhoto struct.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EContactPhoto struct.</doc>
          <type name="ContactPhoto" c:type="EContactPhoto*"/>
        </return-value>
      </constructor>
      <method name="free" c:identifier="e_contact_photo_free">
        <doc xml:whitespace="preserve">Frees the @photo struct and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_inlined"
              c:identifier="e_contact_photo_get_inlined"
              version="3.2">
        <doc xml:whitespace="preserve">Gets the @photo's data.

#EContactPhoto, or %NULL if it has not been set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the inlined image in the</doc>
          <array length="0" zero-terminated="0" c:type="guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="len"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the length of the inlined data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="e_contact_photo_get_mime_type"
              version="3.2">
        <doc xml:whitespace="preserve">Gets the @photo's mime type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the MIME type of the image, or %NULL if it has not been set.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_uri"
              c:identifier="e_contact_photo_get_uri"
              version="3.2">
        <doc xml:whitespace="preserve">Gets the @photo's URI.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the URI of the image, or %NULL if it has not been set</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="set_inlined"
              c:identifier="e_contact_photo_set_inlined"
              version="3.2">
        <doc xml:whitespace="preserve">Sets the @photo's inlined data.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">the inlined image data</doc>
            <array length="1" zero-terminated="0" c:type="guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:whitespace="preserve">the length of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_mime_type"
              c:identifier="e_contact_photo_set_mime_type"
              version="3.2">
        <doc xml:whitespace="preserve">Sets the @photo's mime type.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="mime_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">the mime type</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uri"
              c:identifier="e_contact_photo_set_uri"
              version="3.2">
        <doc xml:whitespace="preserve">Sets the @photo's URI.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:whitespace="preserve">the @photo's URI</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="ContactPhotoType" c:type="EContactPhotoType">
      <member name="inlined"
              value="0"
              c:identifier="E_CONTACT_PHOTO_TYPE_INLINED"/>
      <member name="uri" value="1" c:identifier="E_CONTACT_PHOTO_TYPE_URI"/>
    </enumeration>
    <record name="ContactPrivate" c:type="EContactPrivate" disguised="1">
    </record>
    <class name="Destination"
           c:symbol-prefix="destination"
           c:type="EDestination"
           parent="GObject.Object"
           glib:type-name="EDestination"
           glib:get-type="e_destination_get_type"
           glib:type-struct="DestinationClass">
      <constructor name="new" c:identifier="e_destination_new">
        <doc xml:whitespace="preserve">Creates a new #EDestination with blank values.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly created #EDestination.</doc>
          <type name="Destination" c:type="EDestination*"/>
        </return-value>
      </constructor>
      <function name="exportv" c:identifier="e_destination_exportv">
        <doc xml:whitespace="preserve">Exports multiple #EDestination elements to a single XML document.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An XML string, allocated with g_malloc.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:whitespace="preserve">a %NULL-terminated array of pointers to #EDestination</doc>
            <type name="Destination" c:type="EDestination**"/>
          </parameter>
        </parameters>
      </function>
      <function name="freev" c:identifier="e_destination_freev">
        <doc xml:whitespace="preserve">Unrefs the elements of @destv and frees @destv itself.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:whitespace="preserve">a %NULL-terminated array of pointers to #EDestination</doc>
            <type name="Destination" c:type="EDestination**"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_textrepv" c:identifier="e_destination_get_textrepv">
        <doc xml:whitespace="preserve">Generates a joint text representation of all the #EDestination
elements in @destv.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The text representation of @destv.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:whitespace="preserve">%NULL-terminated array of pointers to #EDestination</doc>
            <type name="Destination" c:type="EDestination**"/>
          </parameter>
        </parameters>
      </function>
      <function name="import" c:identifier="e_destination_import">
        <doc xml:whitespace="preserve">Creates an #EDestination from an XML document.

well-formed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #EDestination, or %NULL if the document was not</doc>
          <type name="Destination" c:type="EDestination*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:whitespace="preserve">an XML string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="importv" c:identifier="e_destination_importv">
        <doc xml:whitespace="preserve">Creates an array of pointers to #EDestination elements
from an XML document.

#EDestination elements.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A %NULL-terminated array of pointers to</doc>
          <type name="Destination" c:type="EDestination**"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:whitespace="preserve">an XML string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <method name="copy" c:identifier="e_destination_copy">
        <doc xml:whitespace="preserve">Creates a new #EDestination identical to @dest.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly created #EDestination, identical to @dest.</doc>
          <type name="Destination" c:type="EDestination*"/>
        </return-value>
      </method>
      <method name="empty" c:identifier="e_destination_empty">
        <doc xml:whitespace="preserve">Checks if @dest is blank.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @dest is empty, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="equal" c:identifier="e_destination_equal">
        <doc xml:whitespace="preserve">Checks if @a and @b are equal.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the destinations are equal, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="b" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export" c:identifier="e_destination_export">
        <doc xml:whitespace="preserve">Exports a destination to an XML document.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An XML string, allocated with g_malloc.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="export_to_vcard_attribute"
              c:identifier="e_destination_export_to_vcard_attribute">
        <doc xml:whitespace="preserve">Exports the contact information from @dest to parameters
and values in @attr, suitable for an address book.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EVCardAttribute</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_address" c:identifier="e_destination_get_address">
        <doc xml:whitespace="preserve">Gets the encoded name and email address, or in the case of lists, the
encoded list of email addresses, from @dest.  The returned string is
suitable for use in an email header, but not for displaying to users.

email header, or %NULL if the destination was empty</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an encoded destination string suitable for use in an</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_contact" c:identifier="e_destination_get_contact">
        <doc xml:whitespace="preserve">Gets the contact @dest is pointing to, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An #EContact, or %NULL if none was set.</doc>
          <type name="Contact" c:type="EContact*"/>
        </return-value>
      </method>
      <method name="get_contact_uid"
              c:identifier="e_destination_get_contact_uid">
        <doc xml:whitespace="preserve">Gets the unique contact ID @dest is pointing to, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A unique contact ID, or %NULL if none was set.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_email" c:identifier="e_destination_get_email">
        <doc xml:whitespace="preserve">Gets the e-mail address of @dest's addressee.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An e-mail address, or an empty string if none was set.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_email_num" c:identifier="e_destination_get_email_num">
        <doc xml:whitespace="preserve">Gets the index of the e-mail address of the contact that
@dest is pointing to, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The e-mail index, or -1 if none was set.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_html_mail_pref"
              c:identifier="e_destination_get_html_mail_pref">
        <doc xml:whitespace="preserve">Check if @dest wants to get mail formatted as HTML.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if destination wants HTML, %FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="get_name" c:identifier="e_destination_get_name">
        <doc xml:whitespace="preserve">Gets the full name of @dest's addressee, or if the addressee is
a contact list, the name the list was filed under.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The full name of the addressee, or %NULL if none was set.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_source_uid"
              c:identifier="e_destination_get_source_uid">
        <doc xml:whitespace="preserve">Gets the unique source ID @dest is pointing to, if any. The source
ID specifies which address book @dest's contact came from.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A unique source ID, or %NULL if none was set.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_textrep" c:identifier="e_destination_get_textrep">
        <doc xml:whitespace="preserve">Generates a textual representation of @dest, suitable for referring
to the destination during user interaction.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A textual representation of the destination.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="include_email" transfer-ownership="none">
            <doc xml:whitespace="preserve">whether to include the e-mail address</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_auto_recipient"
              c:identifier="e_destination_is_auto_recipient">
        <doc xml:whitespace="preserve">Checks if @dest is flagged as an automatic recipient, meaning
it was not explicitly specified by the user. This can be used
to hide it from some UI elements.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if destination is an auto recipient, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_evolution_list"
              c:identifier="e_destination_is_evolution_list">
        <doc xml:whitespace="preserve">Checks if @dest is a list of addresses.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if destination is a list, %FALSE if it is an individual.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_ignored" c:identifier="e_destination_is_ignored">
        <doc xml:whitespace="preserve">Check if @dest is to be ignored.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if this destination should be ignored, else #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="list_get_dests"
              c:identifier="e_destination_list_get_dests"
              version="3.2">
        <doc xml:whitespace="preserve">If @dest is a list, gets recursively list of all destinations.
Everything returned from this function belongs to @dest and
thus should not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of elements of type #EDestination, or %NULL.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Destination"/>
          </type>
        </return-value>
      </method>
      <method name="list_get_root_dests"
              c:identifier="e_destination_list_get_root_dests"
              version="3.2">
        <doc xml:whitespace="preserve">If @dest is a list, gets the list of EDestinations assigned directly
to @dest.
The list and its elements belong to @dest, and should not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of elements of type #EDestination, or %NULL.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Destination"/>
          </type>
        </return-value>
      </method>
      <method name="list_show_addresses"
              c:identifier="e_destination_list_show_addresses">
        <doc xml:whitespace="preserve">If @dest is a list, checks if the addresses in the list
should be presented to the user during interaction.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if addresses should be shown, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="set_auto_recipient"
              c:identifier="e_destination_set_auto_recipient">
        <doc xml:whitespace="preserve">Sets the flag indicating if @dest is an automatic recipient, meaning
it was not explicitly specified by the user. This can be used
to hide it from some UI elements.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">the auto recipient flag</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_book"
              c:identifier="e_destination_set_book"
              deprecated="Use e_destination_set_client() instead."
              deprecated-version="3.2">
        <doc xml:whitespace="preserve">Specify the source @dest's contact comes from. This is useful
if you need to update the contact later.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="book" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBook</doc>
            <type name="Book" c:type="EBook*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_client"
              c:identifier="e_destination_set_client"
              version="3.2">
        <doc xml:whitespace="preserve">Specify the source @dest's contact comes from. This is useful
if you need to update the contact later.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="client" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contact" c:identifier="e_destination_set_contact">
        <doc xml:whitespace="preserve">Sets @dest to point to one of @contact's e-mail addresses
indicated by @email_num.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EContact</doc>
            <type name="Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="email_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">an email index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contact_uid"
              c:identifier="e_destination_set_contact_uid">
        <doc xml:whitespace="preserve">Sets @dest to point to one of the contact specified by @uid's e-mail
addresses indicated by @email_num.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:whitespace="preserve">a unique contact ID</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="email_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">an email index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_email" c:identifier="e_destination_set_email">
        <doc xml:whitespace="preserve">Sets the e-mail address of @dest's addressee.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="email" transfer-ownership="none">
            <doc xml:whitespace="preserve">the destination's e-mail address</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_html_mail_pref"
              c:identifier="e_destination_set_html_mail_pref">
        <doc xml:whitespace="preserve">Specifies whether @dest wants to get mail formatted as HTML.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:whitespace="preserve">whether the destination wants HTML mail</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ignored" c:identifier="e_destination_set_ignored">
        <doc xml:whitespace="preserve">Set the ignore flag on a #EDestination.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ignored" transfer-ownership="none">
            <doc xml:whitespace="preserve">#TRUE if this #EDestination should be ignored.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="e_destination_set_name">
        <doc xml:whitespace="preserve">Sets the full name of @dest's addressee.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">the destination's full name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_raw" c:identifier="e_destination_set_raw">
        <doc xml:whitespace="preserve">Sets @dest to point to the name and e-mail address resulting from
parsing the supplied string. Useful for user input.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="raw" transfer-ownership="none">
            <doc xml:whitespace="preserve">an unparsed string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="gpointer*"/>
      </field>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="DestinationClass"
            c:type="EDestinationClass"
            glib:is-gtype-struct-for="Destination">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="destination" transfer-ownership="none">
              <type name="Destination" c:type="EDestination*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_ebook_reserved1" introspectable="0">
        <callback name="_ebook_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved2" introspectable="0">
        <callback name="_ebook_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved3" introspectable="0">
        <callback name="_ebook_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved4" introspectable="0">
        <callback name="_ebook_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="DestinationPrivate"
            c:type="EDestinationPrivate"
            disguised="1">
    </record>
    <record name="NameWestern" c:type="ENameWestern">
      <field name="prefix" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="first" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="middle" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="nick" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="last" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="suffix" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="full" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="free" c:identifier="e_name_western_free">
        <doc xml:whitespace="preserve">Frees the @w struct and its contents.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <function name="parse"
                c:identifier="e_name_western_parse"
                introspectable="0">
        <doc xml:whitespace="preserve">Parses @full_name and returns an #ENameWestern struct filled with
the component parts of the name.</doc>
        <return-value>
          <doc xml:whitespace="preserve">A new #ENameWestern struct.</doc>
          <type name="NameWestern" c:type="ENameWestern*"/>
        </return-value>
        <parameters>
          <parameter name="full_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">A string containing a western name.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <constant name="VCARD_21_VALID_PARAMETERS"
              value="TYPE,VALUE,ENCODING,CHARSET,LANGUAGE,DOM,INTL,POSTAL,PARCEL,HOME,WORK,PREF,VOICE,FAX,MSG,CELL,PAGER,BBS,MODEM,CAR,ISDN,VIDEO,AOL,APPLELINK,ATTMAIL,CIS,EWORLD,INTERNET,IBMMAIL,MCIMAIL,POWERSHARE,PRODIGY,TLX,X400,GIF,CGM,WMF,BMP,MET,PMB,DIB,PICT,TIFF,PDF,PS,JPEG,QTIME,MPEG,MPEG2,AVI,WAVE,AIFF,PCM,X509,PGP"
              c:type="E_VCARD_21_VALID_PARAMETERS">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VCARD_21_VALID_PROPERTIES"
              value="ADR,ORG,N,AGENT,LOGO,PHOTO,LABEL,FN,TITLE,SOUND,VERSION,TEL,EMAIL,TZ,GEO,NOTE,URL,BDAY,ROLE,REV,UID,KEY,MAILER"
              c:type="E_VCARD_21_VALID_PROPERTIES">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="VCard"
           c:symbol-prefix="vcard"
           c:type="EVCard"
           parent="GObject.Object"
           glib:type-name="EVCard"
           glib:get-type="e_vcard_get_type"
           glib:type-struct="VCardClass">
      <constructor name="new" c:identifier="e_vcard_new">
        <doc xml:whitespace="preserve">Creates a new, blank #EVCard.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new, blank #EVCard.</doc>
          <type name="VCard" c:type="EVCard*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_string"
                   c:identifier="e_vcard_new_from_string">
        <doc xml:whitespace="preserve">Creates a new #EVCard from the passed-in string
representation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EVCard.</doc>
          <type name="VCard" c:type="EVCard*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representation of the vcard to create</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="escape_string" c:identifier="e_vcard_escape_string">
        <doc xml:whitespace="preserve">Escapes a string according to RFC2426, section 5.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated, escaped string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="s" transfer-ownership="none">
            <doc xml:whitespace="preserve">the string to escape</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="unescape_string" c:identifier="e_vcard_unescape_string">
        <doc xml:whitespace="preserve">Unescapes a string according to RFC2426, section 5.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated, unescaped string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="s" transfer-ownership="none">
            <doc xml:whitespace="preserve">the string to unescape</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_attribute" c:identifier="e_vcard_add_attribute">
        <doc xml:whitespace="preserve">Adds @attr to @evc. It's added to the beginning of a list of attributes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttribute to add</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_attribute_with_value"
              c:identifier="e_vcard_add_attribute_with_value">
        <doc xml:whitespace="preserve">Adds @attr to @evcard, setting it to @value. For attribute addition
is used e_vcard_add_attribute().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttribute to add</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a value to assign to the attribute</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_attribute_with_values"
              c:identifier="e_vcard_add_attribute_with_values"
              introspectable="0">
        <doc xml:whitespace="preserve">Adds @attr to @evcard, assigning the list of values to it.
For attribute addition is used e_vcard_add_attribute().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttribute to add</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="append_attribute"
              c:identifier="e_vcard_append_attribute"
              version="2.32">
        <doc xml:whitespace="preserve">Appends @attr to @evc to the end of a list of attributes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttribute to append</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_attribute_with_value"
              c:identifier="e_vcard_append_attribute_with_value"
              version="2.32">
        <doc xml:whitespace="preserve">Appends @attr to @evcard, setting it to @value.
For attribute addition is used e_vcard_append_attribute().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttribute to append</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a value to assign to the attribute</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_attribute_with_values"
              c:identifier="e_vcard_append_attribute_with_values"
              version="2.32"
              introspectable="0">
        <doc xml:whitespace="preserve">Appends @attr to @evcard, assigning the list of values to it.
For attribute addition is used e_vcard_append_attribute().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttribute to append</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="construct" c:identifier="e_vcard_construct">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="construct_with_uid"
              c:identifier="e_vcard_construct_with_uid"
              version="3.4">
        <doc xml:whitespace="preserve">FIXME: Document me!</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump_structure" c:identifier="e_vcard_dump_structure">
        <doc xml:whitespace="preserve">Prints a dump of @evc's structure to stdout. Used for
debugging.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_attribute" c:identifier="e_vcard_get_attribute">
        <doc xml:whitespace="preserve">Get the attribute @name from @evc.  The #EVCardAttribute is owned by
@evcard and should not be freed. If the attribute does not exist, %NULL is
returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An #EVCardAttribute if found, or %NULL.</doc>
          <type name="VCardAttribute" c:type="EVCardAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">the name of the attribute to get</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attribute_if_parsed"
              c:identifier="e_vcard_get_attribute_if_parsed"
              version="3.4">
        <doc xml:whitespace="preserve">Similar to e_vcard_get_attribute() but this method will not attempt to
parse the vcard if not already parsed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An #EVCardAttribute if found, or %NULL.</doc>
          <type name="VCardAttribute" c:type="EVCardAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">the name of the attribute to get</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes" c:identifier="e_vcard_get_attributes">
        <doc xml:whitespace="preserve">Gets the list of attributes from @evcard. The list and its
contents are owned by @evcard, and must not be freed.

of type #EVCardAttribute.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of attributes</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="VCardAttribute"/>
          </type>
        </return-value>
      </method>
      <method name="is_parsed" c:identifier="e_vcard_is_parsed" version="3.2">
        <doc xml:whitespace="preserve">Check if the @evc has been parsed already. Used for debugging.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @evc has been parsed, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="remove_attribute" c:identifier="e_vcard_remove_attribute">
        <doc xml:whitespace="preserve">Removes @attr from @evc and frees it.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #EVCardAttribute to remove</doc>
            <type name="VCardAttribute" c:type="EVCardAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_attributes"
              c:identifier="e_vcard_remove_attributes">
        <doc xml:whitespace="preserve">Removes all the attributes with group name and attribute name equal to
passed in values. If @attr_group is %NULL or an empty string,
it removes all the attributes with passed in name irrespective of
their group names.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attr_group"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">group name of attributes to be removed</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="attr_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the arributes to be removed</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="e_vcard_to_string">
        <doc xml:whitespace="preserve">Exports @evc to a string representation, specified
by the @format argument.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated string representing the vcard.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:whitespace="preserve">the format to export to</doc>
            <type name="VCardFormat" c:type="EVCardFormat"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="VCardPrivate" c:type="EVCardPrivate*"/>
      </field>
    </class>
    <record name="VCardAttribute"
            c:type="EVCardAttribute"
            glib:type-name="EVCardAttribute"
            glib:get-type="e_vcard_attribute_get_type"
            c:symbol-prefix="vcard_attribute">
      <constructor name="new" c:identifier="e_vcard_attribute_new">
        <doc xml:whitespace="preserve">Creates a new #EVCardAttribute with the specified group and
attribute names.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EVCardAttribute.</doc>
          <type name="VCardAttribute" c:type="EVCardAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_group"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="preserve">a group name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="attr_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">an attribute name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_param" c:identifier="e_vcard_attribute_add_param">
        <doc xml:whitespace="preserve">Adds @param to @attr's list of parameters.
It tests for duplicities, only new parameters are added,
when a new parameter already exists in attr, then those
values are merged, also without creating duplicities.
When we will not add whole param, then it's freed here.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="param" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttributeParam to add</doc>
            <type name="VCardAttributeParam" c:type="EVCardAttributeParam*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_param_with_value"
              c:identifier="e_vcard_attribute_add_param_with_value">
        <doc xml:whitespace="preserve">Adds @value to @param, then adds @param to @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="param" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttributeParam</doc>
            <type name="VCardAttributeParam" c:type="EVCardAttributeParam*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_param_with_values"
              c:identifier="e_vcard_attribute_add_param_with_values"
              introspectable="0">
        <doc xml:whitespace="preserve">Adds the list of values to @param, then adds @param
to @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="param" transfer-ownership="full">
            <doc xml:whitespace="preserve">an #EVCardAttributeParam</doc>
            <type name="VCardAttributeParam" c:type="EVCardAttributeParam*"/>
          </parameter>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="add_value" c:identifier="e_vcard_attribute_add_value">
        <doc xml:whitespace="preserve">Adds @value to @attr's list of values.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_value_decoded"
              c:identifier="e_vcard_attribute_add_value_decoded">
        <doc xml:whitespace="preserve">Decodes @value according to the encoding used for @attr, and
adds it to @attr's list of values.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">an encoded value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:whitespace="preserve">the length of the encoded value, in bytes</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_values"
              c:identifier="e_vcard_attribute_add_values"
              introspectable="0">
        <doc xml:whitespace="preserve">Adds a list of values to @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="e_vcard_attribute_copy">
        <doc xml:whitespace="preserve">Makes a copy of @attr.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EVCardAttribute identical to @attr.</doc>
          <type name="VCardAttribute" c:type="EVCardAttribute*"/>
        </return-value>
      </method>
      <method name="free" c:identifier="e_vcard_attribute_free">
        <doc xml:whitespace="preserve">Frees an attribute, its values and its parameters.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_group" c:identifier="e_vcard_attribute_get_group">
        <doc xml:whitespace="preserve">Gets the group name of @attr.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The attribute's group name, or %NULL.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_name" c:identifier="e_vcard_attribute_get_name">
        <doc xml:whitespace="preserve">Gets the name of @attr.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The attribute's name.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_param" c:identifier="e_vcard_attribute_get_param">
        <doc xml:whitespace="preserve">Gets the list of values for the paramater @name from @attr. The list and its
contents are owned by @attr, and must not be freed.

representing the parameter's values.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of string elements</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a parameter name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_params" c:identifier="e_vcard_attribute_get_params">
        <doc xml:whitespace="preserve">Gets the list of parameters from @attr. The list and its
contents are owned by @attr, and must not be freed.

elements of type #EVCardAttributeParam.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="VCardAttributeParam"/>
          </type>
        </return-value>
      </method>
      <method name="get_value" c:identifier="e_vcard_attribute_get_value">
        <doc xml:whitespace="preserve">Gets the value of a single-valued #EVCardAttribute, @attr.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated string representing the value, or %NULL if the attribute has no value.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_value_decoded"
              c:identifier="e_vcard_attribute_get_value_decoded">
        <doc xml:whitespace="preserve">Gets the value of a single-valued #EVCardAttribute, @attr, decoding
it if necessary.

Note: this function seems currently to be unused. Could be removed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated #GString representing the value, or %NULL if the attribute has no value.</doc>
          <type name="GLib.String" c:type="GString*"/>
        </return-value>
      </method>
      <method name="get_values" c:identifier="e_vcard_attribute_get_values">
        <doc xml:whitespace="preserve">Gets the list of values from @attr. The list and its
contents are owned by @attr, and must not be freed.

will all be non-%NULL, but may be empty strings. The list itself may be
empty.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of string values. They</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
      </method>
      <method name="get_values_decoded"
              c:identifier="e_vcard_attribute_get_values_decoded">
        <doc xml:whitespace="preserve">Gets the list of values from @attr, decoding them if
necessary. The list and its contents are owned by @attr,
and must not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of values of type #GString.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="GLib.String"/>
          </type>
        </return-value>
      </method>
      <method name="has_type" c:identifier="e_vcard_attribute_has_type">
        <doc xml:whitespace="preserve">Checks if @attr has an #EVCardAttributeParam of the specified type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if such a parameter exists, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="typestr" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing the type</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_single_valued"
              c:identifier="e_vcard_attribute_is_single_valued">
        <doc xml:whitespace="preserve">Checks if @attr has a single value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if the attribute has exactly one value, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="remove_param"
              c:identifier="e_vcard_attribute_remove_param"
              version="1.12">
        <doc xml:whitespace="preserve">Removes the parameter @param_name from the attribute @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="param_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a parameter name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_param_value"
              c:identifier="e_vcard_attribute_remove_param_value">
        <doc xml:whitespace="preserve">Removes the value @s from the parameter @param_name on the attribute @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="param_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a parameter name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="s" transfer-ownership="none">
            <doc xml:whitespace="preserve">a value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_params"
              c:identifier="e_vcard_attribute_remove_params">
        <doc xml:whitespace="preserve">Removes all parameters from @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="remove_value"
              c:identifier="e_vcard_attribute_remove_value">
        <doc xml:whitespace="preserve">Removes from the value list in @attr the value @s.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="s" transfer-ownership="none">
            <doc xml:whitespace="preserve">an value to remove</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_values"
              c:identifier="e_vcard_attribute_remove_values">
        <doc xml:whitespace="preserve">Removes all values from @attr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="VCardAttributeParam"
            c:type="EVCardAttributeParam"
            glib:type-name="EVCardAttributeParam"
            glib:get-type="e_vcard_attribute_param_get_type"
            c:symbol-prefix="vcard_attribute_param">
      <constructor name="new" c:identifier="e_vcard_attribute_param_new">
        <doc xml:whitespace="preserve">Creates a new parameter named @name.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #EVCardAttributeParam.</doc>
          <type name="VCardAttributeParam" c:type="EVCardAttributeParam*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">the name of the new parameter</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_value"
              c:identifier="e_vcard_attribute_param_add_value">
        <doc xml:whitespace="preserve">Adds @value to @param's list of values.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string value to add</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_values"
              c:identifier="e_vcard_attribute_param_add_values"
              introspectable="0">
        <doc xml:whitespace="preserve">Adds a list of values to @param.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="e_vcard_attribute_param_copy">
        <doc xml:whitespace="preserve">Makes a copy of @param.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #EVCardAttributeParam identical to @param.</doc>
          <type name="VCardAttributeParam" c:type="EVCardAttributeParam*"/>
        </return-value>
      </method>
      <method name="free" c:identifier="e_vcard_attribute_param_free">
        <doc xml:whitespace="preserve">Frees @param and its values.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_name" c:identifier="e_vcard_attribute_param_get_name">
        <doc xml:whitespace="preserve">Gets the name of @param.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The name of the parameter.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_values"
              c:identifier="e_vcard_attribute_param_get_values">
        <doc xml:whitespace="preserve">Gets the list of values from @param. The list and its
contents are owned by @param, and must not be freed.

representing the parameter's values.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">A list of string elements</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
      </method>
      <method name="remove_values"
              c:identifier="e_vcard_attribute_param_remove_values">
        <doc xml:whitespace="preserve">Removes and frees all values from @param.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="VCardClass"
            c:type="EVCardClass"
            glib:is-gtype-struct-for="VCard">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_ebook_reserved0" introspectable="0">
        <callback name="_ebook_reserved0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved1" introspectable="0">
        <callback name="_ebook_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved2" introspectable="0">
        <callback name="_ebook_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved3" introspectable="0">
        <callback name="_ebook_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved4" introspectable="0">
        <callback name="_ebook_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="VCardFormat" c:type="EVCardFormat">
      <member name="21" value="0" c:identifier="EVC_FORMAT_VCARD_21"/>
      <member name="30" value="1" c:identifier="EVC_FORMAT_VCARD_30"/>
    </enumeration>
    <record name="VCardPrivate" c:type="EVCardPrivate" disguised="1">
    </record>
    <function name="book_query_and"
              c:identifier="e_book_query_and"
              moved-to="BookQuery.and">
      <doc xml:whitespace="preserve">Create a new #EBookQuery which is the logical AND of the queries in #qs.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">A new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="nqs" transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of queries to AND</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="qs" transfer-ownership="none">
          <doc xml:whitespace="preserve">pointer to an array of #EBookQuery items</doc>
          <type name="BookQuery" c:type="EBookQuery**"/>
        </parameter>
        <parameter name="unref" transfer-ownership="none">
          <doc xml:whitespace="preserve">if %TRUE, the new query takes ownership of the existing queries</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_any_field_contains"
              c:identifier="e_book_query_any_field_contains"
              moved-to="BookQuery.any_field_contains">
      <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests if any field contains @value.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">the new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:whitespace="preserve">a value</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_field_exists"
              c:identifier="e_book_query_field_exists"
              moved-to="BookQuery.field_exists">
      <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests if the field @field exists.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">the new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="field" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #EContactField</doc>
          <type name="ContactField" c:type="EContactField"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_field_test"
              c:identifier="e_book_query_field_test"
              moved-to="BookQuery.field_test">
      <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests @field for @value using the test @test.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">the new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="field" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #EContactField to test</doc>
          <type name="ContactField" c:type="EContactField"/>
        </parameter>
        <parameter name="test" transfer-ownership="none">
          <doc xml:whitespace="preserve">the test to apply</doc>
          <type name="BookQueryTest" c:type="EBookQueryTest"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:whitespace="preserve">the value to test for</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_from_string"
              c:identifier="e_book_query_from_string"
              moved-to="BookQuery.from_string">
      <doc xml:whitespace="preserve">Parse @query_string and return a new #EBookQuery representing it.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">the new #EBookQuery.</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="query_string" transfer-ownership="none">
          <doc xml:whitespace="preserve">the query</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_or"
              c:identifier="e_book_query_or"
              moved-to="BookQuery.or">
      <doc xml:whitespace="preserve">Creates a new #EBookQuery which is the logical OR of the queries in #qs.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">A new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="nqs" transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of queries to OR</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="qs" transfer-ownership="none">
          <doc xml:whitespace="preserve">pointer to an array of #EBookQuery items</doc>
          <type name="BookQuery" c:type="EBookQuery**"/>
        </parameter>
        <parameter name="unref" transfer-ownership="none">
          <doc xml:whitespace="preserve">if #TRUE, the new query takes ownership of the existing queries</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_vcard_field_exists"
              c:identifier="e_book_query_vcard_field_exists"
              moved-to="BookQuery.vcard_field_exists">
      <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests if the field @field exists. @field
should be a vCard field name, such as #FN or #X-MSN.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">the new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="field" transfer-ownership="none">
          <doc xml:whitespace="preserve">a field name</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="book_query_vcard_field_test"
              c:identifier="e_book_query_vcard_field_test"
              moved-to="BookQuery.vcard_field_test"
              version="2.22">
      <doc xml:whitespace="preserve">Creates a new #EBookQuery which tests @field for @value using the test @test.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">the new #EBookQuery</doc>
        <type name="BookQuery" c:type="EBookQuery*"/>
      </return-value>
      <parameters>
        <parameter name="field" transfer-ownership="none">
          <doc xml:whitespace="preserve">a EVCard field name to test</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="test" transfer-ownership="none">
          <doc xml:whitespace="preserve">the test to apply</doc>
          <type name="BookQueryTest" c:type="EBookQueryTest"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:whitespace="preserve">the value to test for</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="contact_date_from_string"
              c:identifier="e_contact_date_from_string"
              moved-to="ContactDate.from_string">
      <doc xml:whitespace="preserve">Creates a new #EContactDate based on @str.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">A new #EContactDate struct.</doc>
        <type name="ContactDate" c:type="EContactDate*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:whitespace="preserve">a date string in the format YYYY-MM-DD or YYYYMMDD</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="contact_name_from_string"
              c:identifier="e_contact_name_from_string"
              moved-to="ContactName.from_string">
      <doc xml:whitespace="preserve">Creates a new #EContactName based on the parsed @name_str.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">A new #EContactName struct.</doc>
        <type name="ContactName" c:type="EContactName*"/>
      </return-value>
      <parameters>
        <parameter name="name_str" transfer-ownership="none">
          <doc xml:whitespace="preserve">a string representing a contact's full name</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
