1 #ifndef MAILBOX_SEARCH_RESULT_PRIVATE_H
2 #define MAILBOX_SEARCH_RESULT_PRIVATE_H
3 
4 #include "mail-storage.h"
5 
6 struct mail_search_result {
7 	struct mailbox *box;
8 	enum mailbox_search_result_flags flags;
9 	struct mail_search_args *search_args;
10 
11 	/* UIDs of messages currently in the result */
12 	ARRAY_TYPE(seq_range) uids;
13 	/* UIDs of messages that will never match the result */
14 	ARRAY_TYPE(seq_range) never_uids;
15 	ARRAY_TYPE(seq_range) removed_uids, added_uids;
16 
17 	bool args_have_flags:1;
18 	bool args_have_keywords:1;
19 	bool args_have_modseq:1;
20 };
21 
22 struct mail_search_result *
23 mailbox_search_result_alloc(struct mailbox *box, struct mail_search_args *args,
24 			    enum mailbox_search_result_flags flags);
25 
26 /* called when initial search is done. */
27 void mailbox_search_result_initial_done(struct mail_search_result *result);
28 void mailbox_search_results_initial_done(struct mail_search_context *ctx);
29 
30 void mailbox_search_result_add(struct mail_search_result *result, uint32_t uid);
31 void mailbox_search_result_remove(struct mail_search_result *result,
32 				  uint32_t uid);
33 void mailbox_search_results_add(struct mail_search_context *ctx, uint32_t uid);
34 void mailbox_search_results_remove(struct mailbox *box, uint32_t uid);
35 
36 void mailbox_search_result_never(struct mail_search_result *result,
37 				 uint32_t uid);
38 void mailbox_search_results_never(struct mail_search_context *ctx,
39 				  uint32_t uid);
40 
41 #endif
42