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