9 struct SN_env * (*create)(void);
10 void (*
close)(
struct SN_env *);
11 int (*
stem)(
struct SN_env *);
28 if (strcmp(encoding->
name, charenc) == 0)
break;
44 for (module =
modules;
module->name != 0;
module++) {
45 if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break;
47 if (module->name == NULL)
return NULL;
50 if (stemmer == NULL)
return NULL;
52 stemmer->create =
module->create;
53 stemmer->close =
module->close;
54 stemmer->stem =
module->stem;
56 stemmer->env = stemmer->create();
57 if (stemmer->env == NULL)
59 sb_stemmer_delete(stemmer);
69 if (stemmer == 0)
return;
70 if (stemmer->
close == 0)
return;
85 ret = stemmer->
stem(stemmer->
env);
86 if (ret < 0)
return NULL;
87 stemmer->
env->
p[stemmer->
env->
l] = 0;
94 return stemmer->
env->
l;
int SN_set_current(struct SN_env *z, int size, const symbol *s)
int sb_stemmer_length(struct sb_stemmer *stemmer)
static stemmer_encoding_t sb_getenc(const char *charenc)
struct sb_stemmer * sb_stemmer_new(const char *algorithm, const char *charenc)
const char ** sb_stemmer_list(void)
void sb_stemmer_delete(struct sb_stemmer *stemmer)
const sb_symbol * sb_stemmer_stem(struct sb_stemmer *stemmer, const sb_symbol *word, int size)
static struct stemmer_modules modules[]
static struct stemmer_encoding encodings[]
static const char * algorithm_names[]
void(* close)(struct SN_env *)
int(* stem)(struct SN_env *)