00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00028
00029 #ifndef _SUFFIXES
00030 #define _SUFFIXES
00031
00032 #include <string>
00033 #include <set>
00034 #include <map>
00035 #include <vector>
00036
00037 #include "maco_options.h"
00038 #include "language.h"
00039 #include "sufrule.h"
00040 #include "accents.h"
00041
00042
00043 class dictionary;
00044
00049
00050 class suffixes {
00051
00052 private:
00054 accents accen;
00055
00057 multimap<string,sufrule> suffix;
00059 multimap<string,sufrule> suffix_always;
00060
00062 set<unsigned int> ExistingLength;
00064 unsigned int LongestSuf;
00065
00067 void look_for_suffixes_in_list (const multimap<string,sufrule> &, word &, dictionary &) const;
00069 vector<string> GenerateRoots(const sufrule &, const string &) const;
00071 void SearchRootsList(const vector<string> &, const sufrule &, word &, dictionary &) const;
00073 void CheckRetokenizable(const sufrule &, const string &, const string &, const string &, dictionary &, list<word> &) const;
00074
00075 public:
00077 suffixes(const maco_options &);
00078
00080 void look_for_suffixes(word &, dictionary &) const;
00081 };
00082
00083 #endif