Can specify specific paths of submodules to update
[TortoiseGit.git] / ext / hunspell / hashmgr.hxx
blob356e55245e0de7eeae05173e85e98aab4c293428
1 #ifndef _HASHMGR_HXX_
2 #define _HASHMGR_HXX_
4 #include <cstdio>
5 #include "htypes.hxx"
7 enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI };
9 class HashMgr
11 int tablesize;
12 struct hentry * tableptr;
13 int userword;
14 flag flag_mode;
15 int complexprefixes;
16 int utf8;
17 char * ignorechars;
18 unsigned short * ignorechars_utf16;
19 int ignorechars_utf16_len;
20 int numaliasf; // flag vector `compression' with aliases
21 unsigned short ** aliasf;
22 unsigned short * aliasflen;
23 int numaliasm; // morphological desciption `compression' with aliases
24 char ** aliasm;
27 public:
28 HashMgr(const char * tpath, const char * apath);
29 ~HashMgr();
31 struct hentry * lookup(const char *) const;
32 int hash(const char *) const;
33 struct hentry * walk_hashtable(int & col, struct hentry * hp) const;
35 int put_word(const char * word, int wl, char * ap);
36 int put_word_pattern(const char * word, int wl, const char * pattern);
37 int decode_flags(unsigned short ** result, char * flags);
38 unsigned short decode_flag(const char * flag);
39 char * encode_flag(unsigned short flag);
40 int is_aliasf();
41 int get_aliasf(int index, unsigned short ** fvec);
42 #ifdef HUNSPELL_EXPERIMENTAL
43 int is_aliasm();
44 char * get_aliasm(int index);
45 #endif
48 private:
49 int load_tables(const char * tpath);
50 int add_word(const char * word, int wl, unsigned short * ap, int al, const char * desc);
51 int load_config(const char * affpath);
52 int parse_aliasf(char * line, FILE * af);
53 #ifdef HUNSPELL_EXPERIMENTAL
54 int parse_aliasm(char * line, FILE * af);
55 #endif
59 #endif