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;
#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 =
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;
}
#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;
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;
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;
}
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)
/* 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;