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