view src/plugins/fts/fts-api-private.h @ 6410:e4eb71ae8e96 HEAD

Changed .h ifdef/defines to use <NAME>_H format.
author Timo Sirainen <tss@iki.fi>
date Sun, 16 Sep 2007 11:31:27 +0300
parents 22d04968449a
children e739cffd05ef
line wrap: on
line source

#ifndef FTS_API_PRIVATE_H
#define FTS_API_PRIVATE_H

#include "fts-api.h"

struct fts_backend_vfuncs {
	struct fts_backend *(*init)(struct mailbox *box);
	void (*deinit)(struct fts_backend *backend);

	int (*get_last_uid)(struct fts_backend *backend, uint32_t *last_uid_r);

	struct fts_backend_build_context *
		(*build_init)(struct fts_backend *backend,
			      uint32_t *last_uid_r);
	int (*build_more)(struct fts_backend_build_context *ctx, uint32_t uid,
			  const unsigned char *data, size_t size, bool headers);
	int (*build_deinit)(struct fts_backend_build_context *ctx);

	void (*expunge)(struct fts_backend *backend, struct mail *mail);
	void (*expunge_finish)(struct fts_backend *backend,
			       struct mailbox *box, bool committed);

	int (*lock)(struct fts_backend *backend);
	void (*unlock)(struct fts_backend *backend);

	int (*lookup)(struct fts_backend *backend, enum fts_lookup_flags flags,
		      const char *key, ARRAY_TYPE(seq_range) *result);
	int (*filter)(struct fts_backend *backend, enum fts_lookup_flags flags,
		      const char *key, ARRAY_TYPE(seq_range) *result);
};

enum fts_backend_flags {
	/* If set, lookup() and filter() are trusted to return only
	   actual matches. Otherwise the returned mails are opened and
	   searched. */
	FTS_BACKEND_FLAG_DEFINITE_LOOKUPS	= 0x01,
	/* If set, the backend is used also for TEXT and BODY search
	   optimizations. Otherwise only TEXT_FAST and BODY_FAST are
	   optimized. */
	FTS_BACKEND_FLAG_EXACT_LOOKUPS		= 0x02
};

struct fts_backend {
	const char *name;
	enum fts_backend_flags flags;

	struct fts_backend_vfuncs v;

	unsigned int building:1;
};

struct fts_backend_build_context {
	struct fts_backend *backend;

	unsigned int failed:1;
};

void fts_backend_register(const struct fts_backend *backend);
void fts_backend_unregister(const char *name);

#endif