22 #ifndef XAPIAN_INCLUDED_STEMINTERNAL_H
23 #define XAPIAN_INCLUDED_STEMINTERNAL_H
34 #define HEAD (2 * sizeof(int))
46 if (p) std::free(
reinterpret_cast<char *
>(p) -
HEAD);
61 return alignment_cast<const int *>(
p)[-1];
67 alignment_cast<int *>(
p)[-1] = n;
73 return alignment_cast<const int *>(
p)[-2];
79 alignment_cast<int *>(
p)[-2] = n;
91 int in_grouping_U(
const unsigned char * s,
int min,
int max,
int repeat);
92 int in_grouping_b_U(
const unsigned char * s,
int min,
int max,
int repeat);
93 int out_grouping_U(
const unsigned char * s,
int min,
int max,
int repeat);
123 void debug(
int number,
int line_count);
135 virtual std::string
operator()(
const std::string & word);
Cast a pointer we know is suitably aligned.
static void SET_SIZE(symbol *p, int n)
void insert_v(int c_bra, int c_ket, const symbol *v)
symbol * slice_to(symbol *v)
symbol * assign_to(symbol *v)
int eq_s(int s_size, const symbol *s)
int len_utf8(const symbol *v)
static int CAPACITY(const symbol *p)
static void SET_CAPACITY(symbol *p, int n)
static symbol * create_s()
int replace_s(int c_bra, int c_ket, int s_size, const symbol *s)
virtual int stem()=0
Virtual method implemented by the subclass to actually do the work.
int slice_from_v(const symbol *v)
int out_grouping_U(const unsigned char *s, int min, int max, int repeat)
void insert_s(int c_bra, int c_ket, int s_size, const symbol *s)
int in_grouping_U(const unsigned char *s, int min, int max, int repeat)
int get_b_utf8(int *slot)
int slice_from_s(int s_size, const symbol *s)
static int SIZE(const symbol *p)
SnowballStemImplementation()
Perform initialisation common to all Snowball stemmers.
int find_among_b(const symbol *pool, const struct among *v, int v_size, const unsigned char *fnum, const among_function *f)
static symbol * increase_size(symbol *p, int n)
int find_among(const symbol *pool, const struct among *v, int v_size, const unsigned char *fnum, const among_function *f)
int in_grouping_b_U(const unsigned char *s, int min, int max, int repeat)
int eq_s_b(int s_size, const symbol *s)
virtual ~SnowballStemImplementation()
Perform cleanup common to all Snowball stemmers.
int eq_v(const symbol *v)
virtual std::string operator()(const std::string &word)
Stem the specified word.
static int skip_utf8(const symbol *p, int c, int lb, int l, int n)
int eq_v_b(const symbol *v)
int out_grouping_b_U(const unsigned char *s, int min, int max, int repeat)
Class representing a stemming algorithm implementation.
The Xapian namespace contains public interfaces for the Xapian library.
int(* among_function)(Xapian::StemImplementation *)