Extending test-client-custom-summary to try e_book_client_get_contacts_uids()
[platform/upstream/evolution-data-server.git] / camel / camel-vee-data-cache.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  *  Copyright (C) 2012 Red Hat, Inc. (www.redhat.com)
4  *
5  *  Authors: Milan Crha <mcrha@redhat.com>
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of version 2 of the GNU Lesser General Public
9  * License as published by the Free Software Foundation.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this program; if not, write to the
18  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  */
21
22 #if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
23 #error "Only <camel/camel.h> can be included directly."
24 #endif
25
26 #ifndef CAMEL_VEE_DATA_CACHE_H
27 #define CAMEL_VEE_DATA_CACHE_H
28
29 #include <camel/camel-folder.h>
30
31 /* Standard GObject macros */
32 #define CAMEL_TYPE_VEE_SUBFOLDER_DATA \
33         (camel_vee_subfolder_data_get_type ())
34 #define CAMEL_VEE_SUBFOLDER_DATA(obj) \
35         (G_TYPE_CHECK_INSTANCE_CAST \
36         ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderData))
37 #define CAMEL_VEE_SUBFOLDER_DATA_CLASS(cls) \
38         (G_TYPE_CHECK_CLASS_CAST \
39         ((cls), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderDataClass))
40 #define CAMEL_IS_VEE_SUBFOLDER_DATA(obj) \
41         (G_TYPE_CHECK_INSTANCE_TYPE \
42         ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA))
43 #define CAMEL_IS_VEE_SUBFOLDER_DATA_CLASS(cls) \
44         (G_TYPE_CHECK_CLASS_TYPE \
45         ((cls), CAMEL_TYPE_VEE_SUBFOLDER_DATA))
46 #define CAMEL_VEE_SUBFOLDER_DATA_GET_CLASS(obj) \
47         (G_TYPE_INSTANCE_GET_CLASS \
48         ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderDataClass))
49
50 #define CAMEL_TYPE_VEE_MESSAGE_INFO_DATA \
51         (camel_vee_message_info_data_get_type ())
52 #define CAMEL_VEE_MESSAGE_INFO_DATA(obj) \
53         (G_TYPE_CHECK_INSTANCE_CAST \
54         ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoData))
55 #define CAMEL_VEE_MESSAGE_INFO_DATA_CLASS(cls) \
56         (G_TYPE_CHECK_CLASS_CAST \
57         ((cls), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoDataClass))
58 #define CAMEL_IS_VEE_MESSAGE_INFO_DATA(obj) \
59         (G_TYPE_CHECK_INSTANCE_TYPE \
60         ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA))
61 #define CAMEL_IS_VEE_MESSAGE_INFO_DATA_CLASS(cls) \
62         (G_TYPE_CHECK_CLASS_TYPE \
63         ((cls), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA))
64 #define CAMEL_VEE_MESSAGE_INFO_DATA_GET_CLASS(obj) \
65         (G_TYPE_INSTANCE_GET_CLASS \
66         ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoDataClass))
67
68 #define CAMEL_TYPE_VEE_DATA_CACHE \
69         (camel_vee_data_cache_get_type ())
70 #define CAMEL_VEE_DATA_CACHE(obj) \
71         (G_TYPE_CHECK_INSTANCE_CAST \
72         ((obj), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCache))
73 #define CAMEL_VEE_DATA_CACHE_CLASS(cls) \
74         (G_TYPE_CHECK_CLASS_CAST \
75         ((cls), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCacheClass))
76 #define CAMEL_IS_VEE_DATA_CACHE(obj) \
77         (G_TYPE_CHECK_INSTANCE_TYPE \
78         ((obj), CAMEL_TYPE_VEE_DATA_CACHE))
79 #define CAMEL_IS_VEE_DATA_CACHE_CLASS(cls) \
80         (G_TYPE_CHECK_CLASS_TYPE \
81         ((cls), CAMEL_TYPE_VEE_DATA_CACHE))
82 #define CAMEL_VEE_DATA_CACHE_GET_CLASS(obj) \
83         (G_TYPE_INSTANCE_GET_CLASS \
84         ((obj), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCacheClass))
85
86 G_BEGIN_DECLS
87
88 typedef struct _CamelVeeSubfolderData CamelVeeSubfolderData;
89 typedef struct _CamelVeeSubfolderDataClass CamelVeeSubfolderDataClass;
90 typedef struct _CamelVeeSubfolderDataPrivate CamelVeeSubfolderDataPrivate;
91
92 typedef struct _CamelVeeMessageInfoData CamelVeeMessageInfoData;
93 typedef struct _CamelVeeMessageInfoDataClass CamelVeeMessageInfoDataClass;
94 typedef struct _CamelVeeMessageInfoDataPrivate CamelVeeMessageInfoDataPrivate;
95
96 typedef struct _CamelVeeDataCache CamelVeeDataCache;
97 typedef struct _CamelVeeDataCacheClass CamelVeeDataCacheClass;
98 typedef struct _CamelVeeDataCachePrivate CamelVeeDataCachePrivate;
99
100 /**
101  * CamelVeeSubfolderData:
102  *
103  * Since: 3.6
104  **/
105 struct _CamelVeeSubfolderData {
106         GObject parent;
107         CamelVeeSubfolderDataPrivate *priv;
108 };
109
110 struct _CamelVeeSubfolderDataClass {
111         GObjectClass parent_class;
112 };
113
114 GType           camel_vee_subfolder_data_get_type
115                                                 (void) G_GNUC_CONST;
116 CamelVeeSubfolderData *
117                 camel_vee_subfolder_data_new    (CamelFolder *folder);
118 CamelFolder *   camel_vee_subfolder_data_get_folder
119                                                 (CamelVeeSubfolderData *data);
120 const gchar *   camel_vee_subfolder_data_get_folder_id
121                                                 (CamelVeeSubfolderData *data);
122
123 /* ----------------------------------------------------------------------- */
124
125 /**
126  * CamelVeeMessageInfoData:
127  *
128  * Since: 3.6
129  **/
130 struct _CamelVeeMessageInfoData {
131         GObject parent;
132         CamelVeeMessageInfoDataPrivate *priv;
133 };
134
135 struct _CamelVeeMessageInfoDataClass {
136         GObjectClass parent_class;
137 };
138
139 GType           camel_vee_message_info_data_get_type
140                                                 (void) G_GNUC_CONST;
141 CamelVeeMessageInfoData *
142                 camel_vee_message_info_data_new
143                                                 (CamelVeeSubfolderData *subfolder_data,
144                                                  const gchar *orig_message_uid);
145 CamelVeeSubfolderData *
146                 camel_vee_message_info_data_get_subfolder_data
147                                                 (CamelVeeMessageInfoData *data);
148 const gchar *   camel_vee_message_info_data_get_orig_message_uid
149                                                 (CamelVeeMessageInfoData *data);
150 const gchar *   camel_vee_message_info_data_get_vee_message_uid
151                                                 (CamelVeeMessageInfoData *data);
152
153 /* ----------------------------------------------------------------------- */
154
155 /**
156  * CamelVeeDataCache:
157  *
158  * Since: 3.6
159  **/
160 struct _CamelVeeDataCache {
161         GObject parent;
162         CamelVeeDataCachePrivate *priv;
163 };
164
165 struct _CamelVeeDataCacheClass {
166         GObjectClass parent_class;
167 };
168
169 GType           camel_vee_data_cache_get_type   (void) G_GNUC_CONST;
170 CamelVeeDataCache *
171                 camel_vee_data_cache_new        (void);
172 void            camel_vee_data_cache_add_subfolder
173                                                 (CamelVeeDataCache *data_cache,
174                                                  CamelFolder *subfolder);
175 void            camel_vee_data_cache_remove_subfolder
176                                                 (CamelVeeDataCache *data_cache,
177                                                  CamelFolder *subfolder);
178 CamelVeeSubfolderData *
179                 camel_vee_data_cache_get_subfolder_data
180                                                 (CamelVeeDataCache *data_cache,
181                                                  CamelFolder *folder);
182 gboolean        camel_vee_data_cache_contains_message_info_data
183                                                 (CamelVeeDataCache *data_cache,
184                                                  CamelFolder *folder,
185                                                  const gchar *orig_message_uid);
186 CamelVeeMessageInfoData *
187                 camel_vee_data_cache_get_message_info_data
188                                                 (CamelVeeDataCache *data_cache,
189                                                  CamelFolder *folder,
190                                                  const gchar *orig_message_uid);
191 CamelVeeMessageInfoData *
192                 camel_vee_data_cache_get_message_info_data_by_vuid
193                                                 (CamelVeeDataCache *data_cache,
194                                                  const gchar *vee_message_uid);
195 void            camel_vee_data_cache_foreach_message_info_data
196                                                 (CamelVeeDataCache *data_cache,
197                                                  CamelFolder *fromfolder,
198                                                  void (* func) (CamelVeeMessageInfoData *mi_data,
199                                                  CamelFolder *subfolder,
200                                                  gpointer user_data),
201                                                  gpointer user_data);
202 void            camel_vee_data_cache_remove_message_info_data
203                                                 (CamelVeeDataCache *data_cache,
204                                                  CamelVeeMessageInfoData *mi_data);
205
206 G_END_DECLS
207
208 #endif /* CAMEL_VEE_DATA_CACHE_H */