]> git.lyx.org Git - lyx.git/blob - 3rdparty/hunspell/1.3.3/src/hunspell/suggestmgr.hxx
Do not disable the other spellers when compiling against internal hunspell
[lyx.git] / 3rdparty / hunspell / 1.3.3 / src / hunspell / suggestmgr.hxx
1 #ifndef _SUGGESTMGR_HXX_
2 #define _SUGGESTMGR_HXX_
3
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
12
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
17
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)
22
23 #include "hunvisapi.h"
24
25 #include "atypes.hxx"
26 #include "affixmgr.hxx"
27 #include "hashmgr.hxx"
28 #include "langnum.hxx"
29 #include <time.h>
30
31 enum { LCS_UP, LCS_LEFT, LCS_UPLEFT };
32
33 class LIBHUNSPELL_DLL_EXPORTED SuggestMgr
34 {
35 private:
36   SuggestMgr(const SuggestMgr&);
37   SuggestMgr& operator = (const SuggestMgr&);
38 private:
39   char *          ckey;
40   int             ckeyl;
41   w_char *        ckey_utf;
42
43   char *          ctry;
44   int             ctryl;
45   w_char *        ctry_utf;
46
47   AffixMgr*       pAMgr;
48   int             maxSug;
49   struct cs_info * csconv;
50   int             utf8;
51   int             langnum;
52   int             nosplitsugs;
53   int             maxngramsugs;
54   int             maxcpdsugs;
55   int             complexprefixes;
56
57
58 public:
59   SuggestMgr(const char * tryme, int maxn, AffixMgr *aptr);
60   ~SuggestMgr();
61
62   int suggest(char*** slst, const char * word, int nsug, int * onlycmpdsug);
63   int ngsuggest(char ** wlst, char * word, int ns, HashMgr** pHMgr, int md);
64   int suggest_auto(char*** slst, const char * word, int nsug);
65   int suggest_stems(char*** slst, const char * word, int nsug);
66   int suggest_pos_stems(char*** slst, const char * word, int nsug);
67
68   char * suggest_morph(const char * word);
69   char * suggest_gen(char ** pl, int pln, char * pattern);
70   char * suggest_morph_for_spelling_error(const char * word);
71
72 private:
73    int testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest,
74      int * timer, clock_t * timelimit);
75    int checkword(const char *, int, int, int *, clock_t *);
76    int check_forbidden(const char *, int);
77
78    int capchars(char **, const char *, int, int);
79    int replchars(char**, const char *, int, int);
80    int doubletwochars(char**, const char *, int, int);
81    int forgotchar(char **, const char *, int, int);
82    int swapchar(char **, const char *, int, int);
83    int longswapchar(char **, const char *, int, int);
84    int movechar(char **, const char *, int, int);
85    int extrachar(char **, const char *, int, int);
86    int badcharkey(char **, const char *, int, int);
87    int badchar(char **, const char *, int, int);
88    int twowords(char **, const char *, int, int);
89    int fixstems(char **, const char *, int);
90
91    int capchars_utf(char **, const w_char *, int wl, int, int);
92    int doubletwochars_utf(char**, const w_char *, int wl, int, int);
93    int forgotchar_utf(char**, const w_char *, int wl, int, int);
94    int extrachar_utf(char**, const w_char *, int wl, int, int);
95    int badcharkey_utf(char **, const w_char *, int wl, int, int);
96    int badchar_utf(char **, const w_char *, int wl, int, int);
97    int swapchar_utf(char **, const w_char *, int wl, int, int);
98    int longswapchar_utf(char **, const w_char *, int, int, int);
99    int movechar_utf(char **, const w_char *, int, int, int);
100
101    int mapchars(char**, const char *, int, int);
102    int map_related(const char *, char *, int, int, char ** wlst, int, int, const mapentry*, int, int *, clock_t *);
103    int ngram(int n, char * s1, const char * s2, int opt);
104    int mystrlen(const char * word);
105    int leftcommonsubstring(char * s1, const char * s2);
106    int commoncharacterpositions(char * s1, const char * s2, int * is_swap);
107    void bubblesort( char ** rwd, char ** rwd2, int * rsc, int n);
108    void lcs(const char * s, const char * s2, int * l1, int * l2, char ** result);
109    int lcslen(const char * s, const char* s2);
110    char * suggest_hentry_gen(hentry * rv, char * pattern);
111
112 };
113
114 #endif
115