This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
deb-goldedplus/goldlib/hunspell/hunspell.hxx
2006-04-08 04:30:32 +00:00

144 lines
3.6 KiB
C++

#include "hashmgr.hxx"
#include "affixmgr.hxx"
#include "suggmgr.hxx"
#include "csutil.hxx"
#include "langnum.hxx"
#define NOCAP 0
#define INITCAP 1
#define ALLCAP 2
#define HUHCAP 3
#define HUHINITCAP 4
#define MAXSUGGESTION 100
#define MAXSHARPS 5
#ifdef W32
#define DLLTEST2_API __declspec(dllexport)
#endif
#ifndef _MYSPELLMGR_HXX_
#define _MYSPELLMGR_HXX_
#ifdef W32
class DLLTEST2_API Hunspell
#else
class Hunspell
#endif
{
AffixMgr* pAMgr;
HashMgr* pHMgr;
SuggestMgr* pSMgr;
char * encoding;
struct cs_info * csconv;
struct unicode_info2 * utfconv;
int langnum;
int utf8;
int complexprefixes;
char** wordbreak;
/* XXX not stateless variables for compound handling */
char * prevroot;
int prevcompound;
/* forbidden_compound:
* 0 = not forbidden
* 1 = forbidden
* 2 = forbidden compound (written without dash in Hungarian)
*/
int forbidden_compound;
public:
/* Hunspell(aff, dic) - constructor of Hunspell class
* input: path of affix file and dictionary file
*/
Hunspell(const char * affpath, const char * dpath);
~Hunspell();
/* spell(word) - spellcheck word
* output: 0 = bad word, not 0 = good word
*/
int spell(const char *);
/* suggest(suggestions, word) - search suggestions
* input: pointer to an array of strings pointer and the (bad) word
* array of strings pointer (here *slst) may not be initialized
* output: number of suggestions in string array, and suggestions in
* a newly allocated array of strings (*slts will be NULL when number
* of suggestion equals 0.)
*/
int suggest(char*** slst, const char * word);
/* handling custom dictionary */
int put_word(const char * word);
/* suffix is an affix flag string, similarly in dictionary files */
int put_word_suffix(const char * word, const char * suffix);
/* pattern is a sample dictionary word
* put word into custom dictionary with affix flags of pattern word
*/
int put_word_pattern(const char * word, const char * pattern);
/* other */
char * get_dic_encoding();
const char * get_wordchars();
unsigned short * get_wordchars_utf16(int * len);
struct cs_info * get_csconv();
struct unicode_info2 * get_utf_conv();
const char * get_version();
/* experimental functions */
/* morphological analysis */
char * morph(const char * word);
int analyze(char*** out, const char *word);
char * morph_with_correction(const char * word);
/* stemmer function */
int stem(char*** slst, const char * word);
/* spec. suggestions */
int suggest_auto(char*** slst, const char * word);
int suggest_pos_stems(char*** slst, const char * word);
char * get_possible_root();
/* not threadsafe functions for Hunspell command line API */
char * get_prevroot();
int get_prevcompound();
int get_forbidden_compound();
private:
int cleanword(char *, const char *, int * pcaptype, int * pabbrev);
int cleanword2(char *, const char *, w_char *, int * w_len, int * pcaptype, int * pabbrev);
void mkinitcap(char *);
int mkinitcap2(char * p, w_char * u, int nc);
int mkinitsmall2(char * p, w_char * u, int nc);
void mkallcap(char *);
int mkallcap2(char * p, w_char * u, int nc);
void mkallsmall(char *);
int mkallsmall2(char * p, w_char * u, int nc);
struct hentry * check(const char *);
char * sharps_u8_l1(char * dest, char * source);
hentry * spellsharps(char * base, char *, int, int, char * tmp);
int is_keepcase(const hentry * rv);
int insert_sug(char ***slst, char * word, int *ns);
};
#endif