-void yaz_stemmer_stem(yaz_stemmer_p stemmer, struct icu_buf_utf16 *dst, struct icu_buf_utf16* src, UErrorCode *status) {
+yaz_stemmer_p yaz_stemmer_snowball_create(const char *locale, const char *rule, UErrorCode *status) {
+ const char *charenc = yaz_stemmer_lookup_charenc(locale);
+ const char *algorithm = yaz_stemmer_lookup_algorithm(locale,rule);
+ struct sb_stemmer *stemmer = sb_stemmer_new(algorithm, charenc);
+ yaz_stemmer_p yaz_stemmer;
+ if (stemmer == 0) {
+ *status = U_ARGUMENT_TYPE_MISMATCH;
+ return 0;
+ }
+ yaz_stemmer = xmalloc(sizeof(*yaz_stemmer));
+ yaz_stemmer->implementation = yaz_snowball;
+ yaz_stemmer->locale = xstrdup(locale);
+ yaz_stemmer->rule = xstrdup(rule);
+ yaz_stemmer->sb_stemmer = stemmer;