summaryrefslogtreecommitdiffstats
path: root/src/lib-storage/mailbox-search-result-private.h
blob: 983ac3c73f903eb53ec43b3352e6c3c6416a9a75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef MAILBOX_SEARCH_RESULT_PRIVATE_H
#define MAILBOX_SEARCH_RESULT_PRIVATE_H

#include "mail-storage.h"

struct mail_search_result {
	struct mailbox *box;
	enum mailbox_search_result_flags flags;
	struct mail_search_args *search_args;

	/* UIDs of messages currently in the result */
	ARRAY_TYPE(seq_range) uids;
	/* UIDs of messages that will never match the result */
	ARRAY_TYPE(seq_range) never_uids;
	ARRAY_TYPE(seq_range) removed_uids, added_uids;

	bool args_have_flags:1;
	bool args_have_keywords:1;
	bool args_have_modseq:1;
};

struct mail_search_result *
mailbox_search_result_alloc(struct mailbox *box, struct mail_search_args *args,
			    enum mailbox_search_result_flags flags);

/* called when initial search is done. */
void mailbox_search_result_initial_done(struct mail_search_result *result);
void mailbox_search_results_initial_done(struct mail_search_context *ctx);

void mailbox_search_result_add(struct mail_search_result *result, uint32_t uid);
void mailbox_search_result_remove(struct mail_search_result *result,
				  uint32_t uid);
void mailbox_search_results_add(struct mail_search_context *ctx, uint32_t uid);
void mailbox_search_results_remove(struct mailbox *box, uint32_t uid);

void mailbox_search_result_never(struct mail_search_result *result,
				 uint32_t uid);
void mailbox_search_results_never(struct mail_search_context *ctx,
				  uint32_t uid);

#endif