summaryrefslogtreecommitdiffstats
path: root/src/imap/imap-feature.h
blob: a96aa6e4c5765b41c8c487005aabf7669af300d4 (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
#ifndef IMAP_FEATURE_H
#define IMAP_FEATURE_H

typedef void imap_client_enable_callback_t(struct client *);

struct imap_feature {
	const char *feature;
	enum mailbox_feature mailbox_features;
	imap_client_enable_callback_t *callback;
	bool enabled;
};
ARRAY_DEFINE_TYPE(imap_feature, struct imap_feature);

bool imap_feature_lookup(const char *name, unsigned int *feature_idx_r);
const struct imap_feature *imap_feature_idx(unsigned int feature_idx);

unsigned int
imap_feature_register(const char *feature, enum mailbox_feature mailbox_features,
		      imap_client_enable_callback_t *callback);

void imap_features_init(void);
void imap_features_deinit(void);

#endif