From: Timo Sirainen Date: Tue, 2 Jun 2015 21:46:23 +0000 (+0300) Subject: lib-fts: fts-filter API changed to have a non-pointer vfuncs variable. X-Git-Tag: 2.2.19.rc1~379 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be7085921228e1c1333dbf7aa2daca41115c3f23;p=thirdparty%2Fdovecot%2Fcore.git lib-fts: fts-filter API changed to have a non-pointer vfuncs variable. The main benefit being that the fts-filter implementations can save a few lines of code. --- diff --git a/src/lib-fts/fts-filter-lowercase.c b/src/lib-fts/fts-filter-lowercase.c index 0bd30a1474..83333d8a4f 100644 --- a/src/lib-fts/fts-filter-lowercase.c +++ b/src/lib-fts/fts-filter-lowercase.c @@ -44,15 +44,13 @@ fts_filter_lowercase_filter(struct fts_filter *filter ATTR_UNUSED, return 1; } -static const struct fts_filter_vfuncs lowercase_filter_vfuncs = { - fts_filter_lowercase_create, - fts_filter_lowercase_filter, - NULL -}; - static const struct fts_filter fts_filter_lowercase_real = { .class_name = "lowercase", - .v = &lowercase_filter_vfuncs + .v = { + fts_filter_lowercase_create, + fts_filter_lowercase_filter, + NULL + } }; const struct fts_filter *fts_filter_lowercase = &fts_filter_lowercase_real; diff --git a/src/lib-fts/fts-filter-normalizer-icu.c b/src/lib-fts/fts-filter-normalizer-icu.c index 706c8cf6da..a6251adcf8 100644 --- a/src/lib-fts/fts-filter-normalizer-icu.c +++ b/src/lib-fts/fts-filter-normalizer-icu.c @@ -156,15 +156,13 @@ fts_filter_normalizer_icu_destroy(struct fts_filter *normalizer ATTR_UNUSED) #endif -static const struct fts_filter_vfuncs normalizer_filter_vfuncs = { - fts_filter_normalizer_icu_create, - fts_filter_normalizer_icu_filter, - fts_filter_normalizer_icu_destroy -}; - static const struct fts_filter fts_filter_normalizer_icu_real = { .class_name = "normalizer-icu", - .v = &normalizer_filter_vfuncs + .v = { + fts_filter_normalizer_icu_create, + fts_filter_normalizer_icu_filter, + fts_filter_normalizer_icu_destroy + } }; const struct fts_filter *fts_filter_normalizer_icu = diff --git a/src/lib-fts/fts-filter-private.h b/src/lib-fts/fts-filter-private.h index 5c234e8875..0ac8b95f02 100644 --- a/src/lib-fts/fts-filter-private.h +++ b/src/lib-fts/fts-filter-private.h @@ -25,7 +25,7 @@ struct fts_filter_vfuncs { struct fts_filter { const char *class_name; /* name of the class this is based on */ - const struct fts_filter_vfuncs *v; + struct fts_filter_vfuncs v; int refcount; struct fts_filter *parent; string_t *token; diff --git a/src/lib-fts/fts-filter-stemmer-snowball.c b/src/lib-fts/fts-filter-stemmer-snowball.c index 106991d335..dde246f7d5 100644 --- a/src/lib-fts/fts-filter-stemmer-snowball.c +++ b/src/lib-fts/fts-filter-stemmer-snowball.c @@ -116,15 +116,14 @@ fts_filter_stemmer_snowball_filter(struct fts_filter *filter ATTR_UNUSED, } #endif -static const struct fts_filter_vfuncs snowball_stemmer_filter_vfuncs = { - fts_filter_stemmer_snowball_create, - fts_filter_stemmer_snowball_filter, - fts_filter_stemmer_snowball_destroy -}; static const struct fts_filter fts_filter_stemmer_snowball_real = { .class_name = "snowball", - .v = &snowball_stemmer_filter_vfuncs + .v = { + fts_filter_stemmer_snowball_create, + fts_filter_stemmer_snowball_filter, + fts_filter_stemmer_snowball_destroy + } }; const struct fts_filter *fts_filter_stemmer_snowball = &fts_filter_stemmer_snowball_real; diff --git a/src/lib-fts/fts-filter-stopwords.c b/src/lib-fts/fts-filter-stopwords.c index 6f34bd9039..b3dc9a5f43 100644 --- a/src/lib-fts/fts-filter-stopwords.c +++ b/src/lib-fts/fts-filter-stopwords.c @@ -113,14 +113,12 @@ fts_filter_stopwords_filter(struct fts_filter *filter, const char **token, return hash_table_lookup(sp->stopwords, *token) == NULL ? 1 : 0; } -const struct fts_filter_vfuncs stopwords_filter_vfuncs = { - fts_filter_stopwords_create, - fts_filter_stopwords_filter, - fts_filter_stopwords_destroy -}; - const struct fts_filter fts_filter_stopwords_real = { .class_name = "stopwords", - .v = &stopwords_filter_vfuncs + .v = { + fts_filter_stopwords_create, + fts_filter_stopwords_filter, + fts_filter_stopwords_destroy + } }; const struct fts_filter *fts_filter_stopwords = &fts_filter_stopwords_real; diff --git a/src/lib-fts/fts-filter.c b/src/lib-fts/fts-filter.c index 75084f0c3c..db904ff6b7 100644 --- a/src/lib-fts/fts-filter.c +++ b/src/lib-fts/fts-filter.c @@ -63,8 +63,8 @@ int fts_filter_create(const struct fts_filter *filter_class, if (settings == NULL) settings = &empty_settings; - if (filter_class->v->create != NULL) { - if (filter_class->v->create(lang, settings, &fp, error_r) < 0) { + if (filter_class->v.create != NULL) { + if (filter_class->v.create(lang, settings, &fp, error_r) < 0) { *filter_r = NULL; return -1; } @@ -104,8 +104,8 @@ void fts_filter_unref(struct fts_filter **_fpp) if (fp->parent != NULL) fts_filter_unref(&fp->parent); - if (fp->v->destroy != NULL) - fp->v->destroy(fp); + if (fp->v.destroy != NULL) + fp->v.destroy(fp); else { /* default destroy implementation */ if (fp->token != NULL) @@ -127,7 +127,7 @@ int fts_filter_filter(struct fts_filter *filter, const char **token, /* Parent returned token or no parent. */ if (ret > 0 || filter->parent == NULL) - ret = filter->v->filter(filter, token, error_r); + ret = filter->v.filter(filter, token, error_r); if (ret <= 0) *token = NULL;