]> git.lyx.org Git - features.git/blob - src/3rdparty/hunspell/1.3.3/src/hunspell/hashmgr.hxx
add stripped down hunspell 1.3.3
[features.git] / src / 3rdparty / hunspell / 1.3.3 / src / hunspell / hashmgr.hxx
1 #ifndef _HASHMGR_HXX_
2 #define _HASHMGR_HXX_
3
4 #include "hunvisapi.h"
5
6 #include <stdio.h>
7
8 #include "htypes.hxx"
9 #include "filemgr.hxx"
10
11 enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI };
12
13 class LIBHUNSPELL_DLL_EXPORTED HashMgr
14 {
15   int               tablesize;
16   struct hentry **  tableptr;
17   int               userword;
18   flag              flag_mode;
19   int               complexprefixes;
20   int               utf8;
21   unsigned short    forbiddenword;
22   int               langnum;
23   char *            enc;
24   char *            lang;
25   struct cs_info *  csconv;
26   char *            ignorechars;
27   unsigned short *  ignorechars_utf16;
28   int               ignorechars_utf16_len;
29   int               numaliasf; // flag vector `compression' with aliases
30   unsigned short ** aliasf;
31   unsigned short *  aliasflen;
32   int               numaliasm; // morphological desciption `compression' with aliases
33   char **           aliasm;
34
35
36 public:
37   HashMgr(const char * tpath, const char * apath, const char * key = NULL);
38   ~HashMgr();
39
40   struct hentry * lookup(const char *) const;
41   int hash(const char *) const;
42   struct hentry * walk_hashtable(int & col, struct hentry * hp) const;
43
44   int add(const char * word);
45   int add_with_affix(const char * word, const char * pattern);
46   int remove(const char * word);
47   int decode_flags(unsigned short ** result, char * flags, FileMgr * af);
48   unsigned short        decode_flag(const char * flag);
49   char *                encode_flag(unsigned short flag);
50   int is_aliasf();
51   int get_aliasf(int index, unsigned short ** fvec, FileMgr * af);
52   int is_aliasm();
53   char * get_aliasm(int index);
54
55 private:
56   int get_clen_and_captype(const char * word, int wbl, int * captype);
57   int load_tables(const char * tpath, const char * key);
58   int add_word(const char * word, int wbl, int wcl, unsigned short * ap,
59     int al, const char * desc, bool onlyupcase);
60   int load_config(const char * affpath, const char * key);
61   int parse_aliasf(char * line, FileMgr * af);
62   int add_hidden_capitalized_word(char * word, int wbl, int wcl,
63     unsigned short * flags, int al, char * dp, int captype);
64   int parse_aliasm(char * line, FileMgr * af);
65   int remove_forbidden_flag(const char * word);
66
67 };
68
69 #endif