]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fts: fts-filter API changed to have a non-pointer vfuncs variable.
authorTimo Sirainen <tss@iki.fi>
Tue, 2 Jun 2015 21:46:23 +0000 (00:46 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 2 Jun 2015 21:46:23 +0000 (00:46 +0300)
The main benefit being that the fts-filter implementations can save a few
lines of code.

src/lib-fts/fts-filter-lowercase.c
src/lib-fts/fts-filter-normalizer-icu.c
src/lib-fts/fts-filter-private.h
src/lib-fts/fts-filter-stemmer-snowball.c
src/lib-fts/fts-filter-stopwords.c
src/lib-fts/fts-filter.c

index 0bd30a14744ea937be22cc99bf79e21a7ced6b64..83333d8a4fe4bd1fd83b7200cc816b00555537a6 100644 (file)
@@ -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;
index 706c8cf6da0dd2a1aad12ec3d609288101d2ffc6..a6251adcf8d990724c620a24ee7a2affa24a91f5 100644 (file)
@@ -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 =
index 5c234e8875d2bc5e063a2a5546f200368872eb9d..0ac8b95f02dfc44bf731bdbf8c4f6157d8ec50df 100644 (file)
@@ -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;
index 106991d3357750db033aeb3030659cbf2b77e442..dde246f7d58ffc6e48461a3a52d4750f04d06e12 100644 (file)
@@ -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;
index 6f34bd9039f172ca90677baf28af303f88d87c06..b3dc9a5f43404d2ad09f11c992b7443c75d3d850 100644 (file)
@@ -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;
index 75084f0c3c74894a58a707bacc96f08ce1c9a6d2..db904ff6b70d3b0ab73e7b84e6fe723cd136b5f3 100644 (file)
@@ -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;