fts-tokenizer.c revision 12952c18d10fa83be65059471139c2fdc8a00c3d
e59faf65ce864fe95dc00f5d52b8323cdbd0608aTimo Sirainen/* Copyright (c) 2014-2015 Dovecot authors, see the included COPYING file */
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstatic ARRAY(const struct fts_tokenizer *) fts_tokenizer_classes;
a84eb0599fa1d796206eaed65c4e3239f0799276Timo Sirainen if (!array_is_created(&fts_tokenizer_classes)) {
a84eb0599fa1d796206eaed65c4e3239f0799276Timo Sirainen fts_tokenizer_register(fts_tokenizer_generic);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen fts_tokenizer_register(fts_tokenizer_email_address);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenvoid fts_tokenizer_register(const struct fts_tokenizer *tok_class)
ab0d9eecd85f74acae18fe88529302e0776cc500Timo Sirainen if (!array_is_created(&fts_tokenizer_classes))
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen i_array_init(&fts_tokenizer_classes, FTS_TOKENIZER_CLASSES_NR);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen array_append(&fts_tokenizer_classes, &tok_class, 1);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid fts_tokenizer_unregister(const struct fts_tokenizer *tok_class)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen unsigned int idx;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen if (strcmp((*tp)->name, tok_class->name) == 0) {
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen idx = array_foreach_idx(&fts_tokenizer_classes, tp);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenconst struct fts_tokenizer *fts_tokenizer_find(const char *name)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenconst char *fts_tokenizer_name(const struct fts_tokenizer *tok)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstatic void fts_tokenizer_self_reset(struct fts_tokenizer *tok)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenint fts_tokenizer_create(const struct fts_tokenizer *tok_class,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *const *settings,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char **error_r)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen i_assert(settings == NULL || str_array_length(settings) % 2 == 0);
48010d123abfac8cb19f33f1fe12f33a7090089eTimo Sirainen if (tok_class->v->create(settings, &tok, error_r) < 0) {
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen tok->parent_input = buffer_create_dynamic(default_pool, 128);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenvoid fts_tokenizer_ref(struct fts_tokenizer *tok)
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainenvoid fts_tokenizer_unref(struct fts_tokenizer **_tok)
int ret = 0;
if (ret > 0) {
} else if (ret == 0) {
return ret;
int ret;
if (ret != 0)
if (ret != 0)
i_unreached();
return ret;
const char **error_r)