2 from _notmuch_config import *
4 ffibuilder = cffi.FFI()
12 #if LIBNOTMUCH_MAJOR_VERSION < 5
13 #error libnotmuch version not supported by notmuch2 python bindings
15 #if LIBNOTMUCH_MINOR_VERSION < 1
16 #ERROR libnotmuch version < 5.1 not supported
19 include_dirs=[NOTMUCH_INCLUDE_DIR],
20 library_dirs=[NOTMUCH_LIB_DIR],
21 libraries=['notmuch'],
26 typedef int... time_t;
28 #define LIBNOTMUCH_MAJOR_VERSION ...
29 #define LIBNOTMUCH_MINOR_VERSION ...
30 #define LIBNOTMUCH_MICRO_VERSION ...
32 #define NOTMUCH_TAG_MAX ...
34 typedef enum _notmuch_status {
35 NOTMUCH_STATUS_SUCCESS = 0,
36 NOTMUCH_STATUS_OUT_OF_MEMORY,
37 NOTMUCH_STATUS_READ_ONLY_DATABASE,
38 NOTMUCH_STATUS_XAPIAN_EXCEPTION,
39 NOTMUCH_STATUS_FILE_ERROR,
40 NOTMUCH_STATUS_FILE_NOT_EMAIL,
41 NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID,
42 NOTMUCH_STATUS_NULL_POINTER,
43 NOTMUCH_STATUS_TAG_TOO_LONG,
44 NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW,
45 NOTMUCH_STATUS_UNBALANCED_ATOMIC,
46 NOTMUCH_STATUS_UNSUPPORTED_OPERATION,
47 NOTMUCH_STATUS_UPGRADE_REQUIRED,
48 NOTMUCH_STATUS_PATH_ERROR,
49 NOTMUCH_STATUS_ILLEGAL_ARGUMENT,
50 NOTMUCH_STATUS_MALFORMED_CRYPTO_PROTOCOL,
51 NOTMUCH_STATUS_FAILED_CRYPTO_CONTEXT_CREATION,
52 NOTMUCH_STATUS_UNKNOWN_CRYPTO_PROTOCOL,
53 NOTMUCH_STATUS_NO_CONFIG,
54 NOTMUCH_STATUS_NO_DATABASE,
55 NOTMUCH_STATUS_DATABASE_EXISTS,
56 NOTMUCH_STATUS_BAD_QUERY_SYNTAX,
57 NOTMUCH_STATUS_NO_MAIL_ROOT,
58 NOTMUCH_STATUS_CLOSED_DATABASE,
59 NOTMUCH_STATUS_LAST_STATUS
62 NOTMUCH_DATABASE_MODE_READ_ONLY = 0,
63 NOTMUCH_DATABASE_MODE_READ_WRITE
64 } notmuch_database_mode_t;
65 typedef int notmuch_bool_t;
66 typedef enum _notmuch_message_flag {
67 NOTMUCH_MESSAGE_FLAG_MATCH,
68 NOTMUCH_MESSAGE_FLAG_EXCLUDED,
69 NOTMUCH_MESSAGE_FLAG_GHOST,
70 } notmuch_message_flag_t;
72 NOTMUCH_SORT_OLDEST_FIRST,
73 NOTMUCH_SORT_NEWEST_FIRST,
74 NOTMUCH_SORT_MESSAGE_ID,
80 NOTMUCH_EXCLUDE_FALSE,
84 NOTMUCH_DECRYPT_FALSE,
87 NOTMUCH_DECRYPT_NOSTASH,
88 } notmuch_decryption_policy_t;
90 // These are fully opaque types for us, we only ever use pointers.
91 typedef struct _notmuch_database notmuch_database_t;
92 typedef struct _notmuch_query notmuch_query_t;
93 typedef struct _notmuch_threads notmuch_threads_t;
94 typedef struct _notmuch_thread notmuch_thread_t;
95 typedef struct _notmuch_messages notmuch_messages_t;
96 typedef struct _notmuch_message notmuch_message_t;
97 typedef struct _notmuch_tags notmuch_tags_t;
98 typedef struct _notmuch_string_map_iterator notmuch_message_properties_t;
99 typedef struct _notmuch_directory notmuch_directory_t;
100 typedef struct _notmuch_filenames notmuch_filenames_t;
101 typedef struct _notmuch_config_pairs notmuch_config_pairs_t;
102 typedef struct _notmuch_indexopts notmuch_indexopts_t;
105 notmuch_status_to_string (notmuch_status_t status);
108 notmuch_database_create_with_config (const char *database_path,
109 const char *config_path,
111 notmuch_database_t **database,
112 char **error_message);
114 notmuch_database_open_with_config (const char *database_path,
115 notmuch_database_mode_t mode,
116 const char *config_path,
118 notmuch_database_t **database,
119 char **error_message);
121 notmuch_database_close (notmuch_database_t *database);
123 notmuch_database_destroy (notmuch_database_t *database);
125 notmuch_database_get_path (notmuch_database_t *database);
127 notmuch_database_get_version (notmuch_database_t *database);
129 notmuch_database_needs_upgrade (notmuch_database_t *database);
131 notmuch_database_begin_atomic (notmuch_database_t *notmuch);
133 notmuch_database_end_atomic (notmuch_database_t *notmuch);
135 notmuch_database_get_revision (notmuch_database_t *notmuch,
138 notmuch_database_index_file (notmuch_database_t *database,
139 const char *filename,
140 notmuch_indexopts_t *indexopts,
141 notmuch_message_t **message);
143 notmuch_database_remove_message (notmuch_database_t *database,
144 const char *filename);
146 notmuch_database_find_message (notmuch_database_t *database,
147 const char *message_id,
148 notmuch_message_t **message);
150 notmuch_database_find_message_by_filename (notmuch_database_t *notmuch,
151 const char *filename,
152 notmuch_message_t **message);
154 notmuch_database_get_all_tags (notmuch_database_t *db);
157 notmuch_query_create (notmuch_database_t *database,
158 const char *query_string);
160 notmuch_query_get_query_string (const notmuch_query_t *query);
162 notmuch_query_get_database (const notmuch_query_t *query);
164 notmuch_query_set_omit_excluded (notmuch_query_t *query,
165 notmuch_exclude_t omit_excluded);
167 notmuch_query_set_sort (notmuch_query_t *query, notmuch_sort_t sort);
169 notmuch_query_get_sort (const notmuch_query_t *query);
171 notmuch_query_add_tag_exclude (notmuch_query_t *query, const char *tag);
173 notmuch_query_search_threads (notmuch_query_t *query,
174 notmuch_threads_t **out);
176 notmuch_query_search_messages (notmuch_query_t *query,
177 notmuch_messages_t **out);
179 notmuch_query_count_messages (notmuch_query_t *query, unsigned int *count);
181 notmuch_query_count_threads (notmuch_query_t *query, unsigned *count);
183 notmuch_query_destroy (notmuch_query_t *query);
186 notmuch_threads_valid (notmuch_threads_t *threads);
188 notmuch_threads_get (notmuch_threads_t *threads);
190 notmuch_threads_move_to_next (notmuch_threads_t *threads);
192 notmuch_threads_destroy (notmuch_threads_t *threads);
195 notmuch_thread_get_thread_id (notmuch_thread_t *thread);
197 notmuch_message_get_replies (notmuch_message_t *message);
199 notmuch_thread_get_total_messages (notmuch_thread_t *thread);
201 notmuch_thread_get_toplevel_messages (notmuch_thread_t *thread);
203 notmuch_thread_get_messages (notmuch_thread_t *thread);
205 notmuch_thread_get_matched_messages (notmuch_thread_t *thread);
207 notmuch_thread_get_authors (notmuch_thread_t *thread);
209 notmuch_thread_get_subject (notmuch_thread_t *thread);
211 notmuch_thread_get_oldest_date (notmuch_thread_t *thread);
213 notmuch_thread_get_newest_date (notmuch_thread_t *thread);
215 notmuch_thread_get_tags (notmuch_thread_t *thread);
217 notmuch_thread_destroy (notmuch_thread_t *thread);
220 notmuch_messages_valid (notmuch_messages_t *messages);
222 notmuch_messages_get (notmuch_messages_t *messages);
224 notmuch_messages_move_to_next (notmuch_messages_t *messages);
226 notmuch_messages_destroy (notmuch_messages_t *messages);
228 notmuch_messages_collect_tags (notmuch_messages_t *messages);
231 notmuch_message_get_message_id (notmuch_message_t *message);
233 notmuch_message_get_thread_id (notmuch_message_t *message);
235 notmuch_message_get_filename (notmuch_message_t *message);
236 notmuch_filenames_t *
237 notmuch_message_get_filenames (notmuch_message_t *message);
239 notmuch_message_get_flag (notmuch_message_t *message,
240 notmuch_message_flag_t flag);
242 notmuch_message_set_flag (notmuch_message_t *message,
243 notmuch_message_flag_t flag,
244 notmuch_bool_t value);
246 notmuch_message_get_date (notmuch_message_t *message);
248 notmuch_message_get_header (notmuch_message_t *message,
251 notmuch_message_get_tags (notmuch_message_t *message);
253 notmuch_message_add_tag (notmuch_message_t *message, const char *tag);
255 notmuch_message_remove_tag (notmuch_message_t *message, const char *tag);
257 notmuch_message_remove_all_tags (notmuch_message_t *message);
259 notmuch_message_maildir_flags_to_tags (notmuch_message_t *message);
261 notmuch_message_tags_to_maildir_flags (notmuch_message_t *message);
263 notmuch_message_freeze (notmuch_message_t *message);
265 notmuch_message_thaw (notmuch_message_t *message);
267 notmuch_message_get_property (notmuch_message_t *message,
268 const char *key, const char **value);
270 notmuch_message_add_property (notmuch_message_t *message,
271 const char *key, const char *value);
273 notmuch_message_remove_property (notmuch_message_t *message,
274 const char *key, const char *value);
276 notmuch_message_remove_all_properties (notmuch_message_t *message,
278 notmuch_message_properties_t *
279 notmuch_message_get_properties (notmuch_message_t *message,
280 const char *key, notmuch_bool_t exact);
282 notmuch_message_properties_valid (notmuch_message_properties_t
285 notmuch_message_properties_move_to_next (notmuch_message_properties_t
288 notmuch_message_properties_key (notmuch_message_properties_t *properties);
290 notmuch_message_properties_value (notmuch_message_properties_t
293 notmuch_message_properties_destroy (notmuch_message_properties_t
296 notmuch_message_destroy (notmuch_message_t *message);
299 notmuch_tags_valid (notmuch_tags_t *tags);
301 notmuch_tags_get (notmuch_tags_t *tags);
303 notmuch_tags_move_to_next (notmuch_tags_t *tags);
305 notmuch_tags_destroy (notmuch_tags_t *tags);
308 notmuch_filenames_valid (notmuch_filenames_t *filenames);
310 notmuch_filenames_get (notmuch_filenames_t *filenames);
312 notmuch_filenames_move_to_next (notmuch_filenames_t *filenames);
314 notmuch_filenames_destroy (notmuch_filenames_t *filenames);
315 notmuch_indexopts_t *
316 notmuch_database_get_default_indexopts (notmuch_database_t *db);
318 notmuch_indexopts_set_decrypt_policy (notmuch_indexopts_t *indexopts,
319 notmuch_decryption_policy_t decrypt_policy);
320 notmuch_decryption_policy_t
321 notmuch_indexopts_get_decrypt_policy (const notmuch_indexopts_t *indexopts);
323 notmuch_indexopts_destroy (notmuch_indexopts_t *options);
326 notmuch_database_set_config (notmuch_database_t *db, const char *key, const char *value);
328 notmuch_database_get_config (notmuch_database_t *db, const char *key, char **value);
329 notmuch_config_pairs_t *
330 notmuch_config_get_pairs (notmuch_database_t *db, const char *prefix);
332 notmuch_config_pairs_valid (notmuch_config_pairs_t *config_list);
334 notmuch_config_pairs_key (notmuch_config_pairs_t *config_list);
336 notmuch_config_pairs_value (notmuch_config_pairs_t *config_list);
338 notmuch_config_pairs_move_to_next (notmuch_config_pairs_t *config_list);
340 notmuch_config_pairs_destroy (notmuch_config_pairs_t *config_list);
345 if __name__ == '__main__':
346 ffibuilder.compile(verbose=True)