Updated hunspell to 1.3.2
[TortoiseGit.git] / ext / hunspell / suggestmgr.hxx
blob5f043fdfd282767380bdaab922ecd1acae02968e
1 #ifndef _SUGGESTMGR_HXX_
2 #define _SUGGESTMGR_HXX_
4 #define MAXSWL 100
5 #define MAXSWUTF8L (MAXSWL * 4)
6 #define MAX_ROOTS 100
7 #define MAX_WORDS 100
8 #define MAX_GUESS 200
9 #define MAXNGRAMSUGS 4
10 #define MAXPHONSUGS 2
11 #define MAXCOMPOUNDSUGS 3
13 // timelimit: max ~1/4 sec (process time on Linux) for a time consuming function
14 #define TIMELIMIT (CLOCKS_PER_SEC >> 2)
15 #define MINTIMER 100
16 #define MAXPLUSTIMER 100
18 #define NGRAM_LONGER_WORSE (1 << 0)
19 #define NGRAM_ANY_MISMATCH (1 << 1)
20 #define NGRAM_LOWERING (1 << 2)
21 #define NGRAM_WEIGHTED (1 << 3)
23 #include "hunvisapi.h"
25 #include "atypes.hxx"
26 #include "affixmgr.hxx"
27 #include "hashmgr.hxx"
28 #include "langnum.hxx"
29 #include <time.h>
31 enum { LCS_UP, LCS_LEFT, LCS_UPLEFT };
33 class LIBHUNSPELL_DLL_EXPORTED SuggestMgr
35 char * ckey;
36 int ckeyl;
37 w_char * ckey_utf;
39 char * ctry;
40 int ctryl;
41 w_char * ctry_utf;
43 AffixMgr* pAMgr;
44 int maxSug;
45 struct cs_info * csconv;
46 int utf8;
47 int langnum;
48 int nosplitsugs;
49 int maxngramsugs;
50 int maxcpdsugs;
51 int complexprefixes;
54 public:
55 SuggestMgr(const char * tryme, int maxn, AffixMgr *aptr);
56 ~SuggestMgr();
58 int suggest(char*** slst, const char * word, int nsug, int * onlycmpdsug);
59 int ngsuggest(char ** wlst, char * word, int ns, HashMgr** pHMgr, int md);
60 int suggest_auto(char*** slst, const char * word, int nsug);
61 int suggest_stems(char*** slst, const char * word, int nsug);
62 int suggest_pos_stems(char*** slst, const char * word, int nsug);
64 char * suggest_morph(const char * word);
65 char * suggest_gen(char ** pl, int pln, char * pattern);
66 char * suggest_morph_for_spelling_error(const char * word);
68 private:
69 int testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest,
70 int * timer, clock_t * timelimit);
71 int checkword(const char *, int, int, int *, clock_t *);
72 int check_forbidden(const char *, int);
74 int capchars(char **, const char *, int, int);
75 int replchars(char**, const char *, int, int);
76 int doubletwochars(char**, const char *, int, int);
77 int forgotchar(char **, const char *, int, int);
78 int swapchar(char **, const char *, int, int);
79 int longswapchar(char **, const char *, int, int);
80 int movechar(char **, const char *, int, int);
81 int extrachar(char **, const char *, int, int);
82 int badcharkey(char **, const char *, int, int);
83 int badchar(char **, const char *, int, int);
84 int twowords(char **, const char *, int, int);
85 int fixstems(char **, const char *, int);
87 int capchars_utf(char **, const w_char *, int wl, int, int);
88 int doubletwochars_utf(char**, const w_char *, int wl, int, int);
89 int forgotchar_utf(char**, const w_char *, int wl, int, int);
90 int extrachar_utf(char**, const w_char *, int wl, int, int);
91 int badcharkey_utf(char **, const w_char *, int wl, int, int);
92 int badchar_utf(char **, const w_char *, int wl, int, int);
93 int swapchar_utf(char **, const w_char *, int wl, int, int);
94 int longswapchar_utf(char **, const w_char *, int, int, int);
95 int movechar_utf(char **, const w_char *, int, int, int);
97 int mapchars(char**, const char *, int, int);
98 int map_related(const char *, char *, int, int, char ** wlst, int, int, const mapentry*, int, int *, clock_t *);
99 int ngram(int n, char * s1, const char * s2, int opt);
100 int mystrlen(const char * word);
101 int leftcommonsubstring(char * s1, const char * s2);
102 int commoncharacterpositions(char * s1, const char * s2, int * is_swap);
103 void bubblesort( char ** rwd, char ** rwd2, int * rsc, int n);
104 void lcs(const char * s, const char * s2, int * l1, int * l2, char ** result);
105 int lcslen(const char * s, const char* s2);
106 char * suggest_hentry_gen(hentry * rv, char * pattern);
110 #endif