Aegisub/subprojects/hunspell/src/hunspell/hashmgr.hxx

70 lines
2.2 KiB
C++
Raw Normal View History

#ifndef _HASHMGR_HXX_
#define _HASHMGR_HXX_
2012-10-08 21:20:19 +02:00
#include "hunvisapi.h"
#include <stdio.h>
#include "htypes.hxx"
2012-10-08 21:20:19 +02:00
#include "filemgr.hxx"
enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI };
2012-10-08 21:20:19 +02:00
class LIBHUNSPELL_DLL_EXPORTED HashMgr
{
2012-10-08 21:20:19 +02:00
int tablesize;
struct hentry ** tableptr;
int userword;
flag flag_mode;
int complexprefixes;
int utf8;
unsigned short forbiddenword;
int langnum;
char * enc;
char * lang;
struct cs_info * csconv;
char * ignorechars;
unsigned short * ignorechars_utf16;
int ignorechars_utf16_len;
int numaliasf; // flag vector `compression' with aliases
unsigned short ** aliasf;
unsigned short * aliasflen;
int numaliasm; // morphological desciption `compression' with aliases
char ** aliasm;
public:
2012-10-08 21:20:19 +02:00
HashMgr(const char * tpath, const char * apath, const char * key = NULL);
~HashMgr();
struct hentry * lookup(const char *) const;
int hash(const char *) const;
struct hentry * walk_hashtable(int & col, struct hentry * hp) const;
2012-10-08 21:20:19 +02:00
int add(const char * word);
int add_with_affix(const char * word, const char * pattern);
int remove(const char * word);
2012-10-08 21:20:19 +02:00
int decode_flags(unsigned short ** result, char * flags, FileMgr * af);
unsigned short decode_flag(const char * flag);
char * encode_flag(unsigned short flag);
int is_aliasf();
2012-10-08 21:20:19 +02:00
int get_aliasf(int index, unsigned short ** fvec, FileMgr * af);
int is_aliasm();
char * get_aliasm(int index);
2012-10-08 21:20:19 +02:00
private:
int get_clen_and_captype(const char * word, int wbl, int * captype);
2012-10-08 21:20:19 +02:00
int load_tables(const char * tpath, const char * key);
int add_word(const char * word, int wbl, int wcl, unsigned short * ap,
int al, const char * desc, bool onlyupcase);
2012-10-08 21:20:19 +02:00
int load_config(const char * affpath, const char * key);
int parse_aliasf(char * line, FileMgr * af);
int add_hidden_capitalized_word(char * word, int wbl, int wcl,
unsigned short * flags, int al, char * dp, int captype);
2012-10-08 21:20:19 +02:00
int parse_aliasm(char * line, FileMgr * af);
int remove_forbidden_flag(const char * word);
};
#endif