1*be7d0ac7SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*be7d0ac7SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*be7d0ac7SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*be7d0ac7SAndrew Rist * distributed with this work for additional information 6*be7d0ac7SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*be7d0ac7SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*be7d0ac7SAndrew Rist * "License"); you may not use this file except in compliance 9*be7d0ac7SAndrew Rist * with the License. You may obtain a copy of the License at 10*be7d0ac7SAndrew Rist * 11*be7d0ac7SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*be7d0ac7SAndrew Rist * 13*be7d0ac7SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*be7d0ac7SAndrew Rist * software distributed under the License is distributed on an 15*be7d0ac7SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*be7d0ac7SAndrew Rist * KIND, either express or implied. See the License for the 17*be7d0ac7SAndrew Rist * specific language governing permissions and limitations 18*be7d0ac7SAndrew Rist * under the License. 19*be7d0ac7SAndrew Rist * 20*be7d0ac7SAndrew Rist *************************************************************/ 21*be7d0ac7SAndrew Rist 22*be7d0ac7SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _CONNECTIVITY_EVOAB_EVOLUTION_API_HXX_ 25cdf0e10cSrcweir #define _CONNECTIVITY_EVOAB_EVOLUTION_API_HXX_ 26cdf0e10cSrcweir #include <glib-object.h> 27cdf0e10cSrcweir 28cdf0e10cSrcweir // Initializes the API below, returns false if not available 29cdf0e10cSrcweir bool EApiInit(); 30cdf0e10cSrcweir 31cdf0e10cSrcweir G_BEGIN_DECLS 32cdf0e10cSrcweir 33cdf0e10cSrcweir // This header defined all the API methods as 34cdf0e10cSrcweir // function pointers instead of real functions 35cdf0e10cSrcweir // this will all evaporate as it is compiled generating 36cdf0e10cSrcweir // no symbol lookups or relocations, but giving code 37cdf0e10cSrcweir // clarity. 38cdf0e10cSrcweir 39cdf0e10cSrcweir // We attempt to define a minimum API that we use: 40cdf0e10cSrcweir 41cdf0e10cSrcweir // e-contact.h 42cdf0e10cSrcweir #ifdef DECLARE_FN_POINTERS 43cdf0e10cSrcweir #define EAPI_EXTERN 44cdf0e10cSrcweir #else 45cdf0e10cSrcweir #define EAPI_EXTERN extern 46cdf0e10cSrcweir #endif 47cdf0e10cSrcweir 48cdf0e10cSrcweir 49cdf0e10cSrcweir typedef void EContact; 50cdf0e10cSrcweir #define E_CONTACT(a) ((EContact *)(a)) 51cdf0e10cSrcweir #define E_TYPE_CONTACT (e_contact_get_type()) 52cdf0e10cSrcweir typedef int EContactField; 53cdf0e10cSrcweir 54cdf0e10cSrcweir EAPI_EXTERN const char *(*e_contact_field_name) ( EContactField field_id); 55cdf0e10cSrcweir EAPI_EXTERN gpointer (*e_contact_get) (EContact *contact, EContactField field_id); 56cdf0e10cSrcweir EAPI_EXTERN gconstpointer (*e_contact_get_const) (EContact *contact, EContactField field_id); 57cdf0e10cSrcweir // e-source.h 58cdf0e10cSrcweir typedef void ESource; 59cdf0e10cSrcweir #define E_SOURCE(a) ((ESource *)(a)) 60cdf0e10cSrcweir EAPI_EXTERN const char *(*e_source_peek_name) (ESource *source); 61cdf0e10cSrcweir EAPI_EXTERN const gchar *(*e_source_get_property) (ESource *source, 62cdf0e10cSrcweir const gchar *property); 63cdf0e10cSrcweir 64cdf0e10cSrcweir EAPI_EXTERN GType (*e_contact_get_type) (void); 65cdf0e10cSrcweir EAPI_EXTERN EContactField (*e_contact_field_id) (const char *field_name); 66cdf0e10cSrcweir 67cdf0e10cSrcweir // e-source-list.h 68cdf0e10cSrcweir typedef void ESourceList; 69cdf0e10cSrcweir EAPI_EXTERN GSList *(*e_source_list_peek_groups) (ESourceList *list); 70cdf0e10cSrcweir 71cdf0e10cSrcweir // e-source-group.h 72cdf0e10cSrcweir typedef void ESourceGroup; 73cdf0e10cSrcweir #define E_SOURCE_GROUP(a) ((ESourceGroup *)(a)) 74cdf0e10cSrcweir 75cdf0e10cSrcweir EAPI_EXTERN GSList *(*e_source_group_peek_sources) (ESourceGroup *group); 76cdf0e10cSrcweir EAPI_EXTERN const char *(*e_source_group_peek_base_uri) (ESourceGroup *group); 77cdf0e10cSrcweir // e-book.h 78cdf0e10cSrcweir typedef enum { 79cdf0e10cSrcweir E_BOOK_QUERY_IS, 80cdf0e10cSrcweir E_BOOK_QUERY_CONTAINS, 81cdf0e10cSrcweir E_BOOK_QUERY_BEGINS_WITH, 82cdf0e10cSrcweir E_BOOK_QUERY_ENDS_WITH, 83cdf0e10cSrcweir } EBookQueryTest; 84cdf0e10cSrcweir 85cdf0e10cSrcweir typedef void EBook; 86cdf0e10cSrcweir typedef void EBookQuery; 87cdf0e10cSrcweir 88cdf0e10cSrcweir EAPI_EXTERN EBook *(*e_book_new) (ESource *source, 89cdf0e10cSrcweir GError **error); 90cdf0e10cSrcweir 91cdf0e10cSrcweir EAPI_EXTERN gboolean (*e_book_open) (EBook *book, 92cdf0e10cSrcweir gboolean only_if_exists, 93cdf0e10cSrcweir GError **error); 94cdf0e10cSrcweir 95cdf0e10cSrcweir EAPI_EXTERN const char *(*e_book_get_uri) (EBook *book); 96cdf0e10cSrcweir EAPI_EXTERN ESource *(*e_book_get_source)(EBook *book); 97cdf0e10cSrcweir 98cdf0e10cSrcweir EAPI_EXTERN gboolean (*e_book_get_addressbooks) (ESourceList **addressbook_sources, 99cdf0e10cSrcweir GError **error); 100cdf0e10cSrcweir 101cdf0e10cSrcweir EAPI_EXTERN gboolean (*e_book_get_contacts) (EBook *book, 102cdf0e10cSrcweir EBookQuery *query, 103cdf0e10cSrcweir GList **contacts, 104cdf0e10cSrcweir GError **error); 105cdf0e10cSrcweir 106cdf0e10cSrcweir EAPI_EXTERN gboolean (*e_book_authenticate_user) (EBook *book, 107cdf0e10cSrcweir const char *user, 108cdf0e10cSrcweir const char *passwd, 109cdf0e10cSrcweir const char *auth_method, 110cdf0e10cSrcweir GError **error); 111cdf0e10cSrcweir 112cdf0e10cSrcweir // e-book-query.h 113cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_field_exists) (EContactField field); 114cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_field_test) (EContactField field, 115cdf0e10cSrcweir EBookQueryTest test, 116cdf0e10cSrcweir const char *value); 117cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_and) (int nqs, EBookQuery **qs, gboolean unref); 118cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_or) (int nqs, EBookQuery **qs, gboolean unref); 119cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_not) (EBookQuery *q, gboolean unref); 120cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_ref) (EBookQuery *q); 121cdf0e10cSrcweir EAPI_EXTERN void (*e_book_query_unref) (EBookQuery *q); 122cdf0e10cSrcweir EAPI_EXTERN char* (*e_book_query_to_string) (EBookQuery *q); 123cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_from_string) (const char *query_string); 124cdf0e10cSrcweir 125cdf0e10cSrcweir typedef struct { 126cdf0e10cSrcweir char *address_format; /* the two letter country code that 127cdf0e10cSrcweir determines the format/meaning of the 128cdf0e10cSrcweir following fields */ 129cdf0e10cSrcweir char *po; 130cdf0e10cSrcweir char *ext; 131cdf0e10cSrcweir char *street; 132cdf0e10cSrcweir char *locality; 133cdf0e10cSrcweir char *region; 134cdf0e10cSrcweir char *code; 135cdf0e10cSrcweir char *country; 136cdf0e10cSrcweir } EContactAddress; 137cdf0e10cSrcweir G_END_DECLS 138cdf0e10cSrcweir #endif 139cdf0e10cSrcweir 140