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