summaryrefslogtreecommitdiff
path: root/libs/hunspell/src/suggestmgr.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hunspell/src/suggestmgr.hxx')
-rw-r--r--libs/hunspell/src/suggestmgr.hxx114
1 files changed, 52 insertions, 62 deletions
diff --git a/libs/hunspell/src/suggestmgr.hxx b/libs/hunspell/src/suggestmgr.hxx
index 675d98eb8f..19ffc03a84 100644
--- a/libs/hunspell/src/suggestmgr.hxx
+++ b/libs/hunspell/src/suggestmgr.hxx
@@ -1,6 +1,8 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
+ * Copyright (C) 2002-2017 Németh László
+ *
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -11,12 +13,7 @@
* for the specific language governing rights and limitations under the
* License.
*
- * The Original Code is Hunspell, based on MySpell.
- *
- * The Initial Developers of the Original Code are
- * Kevin Hendricks (MySpell) and Németh László (Hunspell).
- * Portions created by the Initial Developers are Copyright (C) 2002-2005
- * the Initial Developers. All Rights Reserved.
+ * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks.
*
* Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno,
* Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád,
@@ -71,8 +68,8 @@
* SUCH DAMAGE.
*/
-#ifndef _SUGGESTMGR_HXX_
-#define _SUGGESTMGR_HXX_
+#ifndef SUGGESTMGR_HXX_
+#define SUGGESTMGR_HXX_
#define MAX_ROOTS 100
#define MAX_WORDS 100
@@ -91,8 +88,6 @@
#define NGRAM_LOWERING (1 << 2)
#define NGRAM_WEIGHTED (1 << 3)
-#include "hunvisapi.h"
-
#include "atypes.hxx"
#include "affixmgr.hxx"
#include "hashmgr.hxx"
@@ -101,22 +96,22 @@
enum { LCS_UP, LCS_LEFT, LCS_UPLEFT };
-class LIBHUNSPELL_DLL_EXPORTED SuggestMgr {
+class SuggestMgr {
private:
SuggestMgr(const SuggestMgr&);
SuggestMgr& operator=(const SuggestMgr&);
private:
char* ckey;
- int ckeyl;
- w_char* ckey_utf;
+ size_t ckeyl;
+ std::vector<w_char> ckey_utf;
char* ctry;
- int ctryl;
- w_char* ctry_utf;
+ size_t ctryl;
+ std::vector<w_char> ctry_utf;
AffixMgr* pAMgr;
- int maxSug;
+ unsigned int maxSug;
struct cs_info* csconv;
int utf8;
int langnum;
@@ -126,73 +121,68 @@ class LIBHUNSPELL_DLL_EXPORTED SuggestMgr {
int complexprefixes;
public:
- SuggestMgr(const char* tryme, int maxn, AffixMgr* aptr);
+ SuggestMgr(const char* tryme, unsigned int maxn, AffixMgr* aptr);
~SuggestMgr();
- int suggest(char*** slst, const char* word, int nsug, int* onlycmpdsug);
- int ngsuggest(char** wlst, const char* word, int ns, HashMgr** pHMgr, int md);
- int suggest_auto(char*** slst, const char* word, int nsug);
- int suggest_stems(char*** slst, const char* word, int nsug);
- int suggest_pos_stems(char*** slst, const char* word, int nsug);
+ void suggest(std::vector<std::string>& slst, const char* word, int* onlycmpdsug);
+ void ngsuggest(std::vector<std::string>& slst, const char* word, const std::vector<HashMgr*>& rHMgr);
- char* suggest_morph(const char* word);
- char* suggest_gen(char** pl, int pln, const char* pattern);
- char* suggest_morph_for_spelling_error(const char* word);
+ std::string suggest_morph(const std::string& word);
+ std::string suggest_gen(const std::vector<std::string>& pl, const std::string& pattern);
private:
- int testsug(char** wlst,
- const char* candidate,
- int wl,
- int ns,
- int cpdsuggest,
- int* timer,
- clock_t* timelimit);
- int checkword(const char*, int, int, int*, clock_t*);
+ void testsug(std::vector<std::string>& wlst,
+ const std::string& candidate,
+ int cpdsuggest,
+ int* timer,
+ clock_t* timelimit);
+ int checkword(const std::string& word, int, int*, clock_t*);
int check_forbidden(const char*, int);
- int capchars(char**, const char*, int, int);
- int replchars(char**, const char*, int, int);
- int doubletwochars(char**, const char*, int, int);
- int forgotchar(char**, const char*, int, int);
- int swapchar(char**, const char*, int, int);
- int longswapchar(char**, const char*, int, int);
- int movechar(char**, const char*, int, int);
- int extrachar(char**, const char*, int, int);
- int badcharkey(char**, const char*, int, int);
- int badchar(char**, const char*, int, int);
- int twowords(char**, const char*, int, int);
- int fixstems(char**, const char*, int);
-
- int capchars_utf(char**, const w_char*, int wl, int, int);
- int doubletwochars_utf(char**, const w_char*, int wl, int, int);
- int forgotchar_utf(char**, const w_char*, int wl, int, int);
- int extrachar_utf(char**, const w_char*, int wl, int, int);
- int badcharkey_utf(char**, const w_char*, int wl, int, int);
- int badchar_utf(char**, const w_char*, int wl, int, int);
- int swapchar_utf(char**, const w_char*, int wl, int, int);
- int longswapchar_utf(char**, const w_char*, int, int, int);
- int movechar_utf(char**, const w_char*, int, int, int);
-
- int mapchars(char**, const char*, int, int);
+ void capchars(std::vector<std::string>&, const char*, int);
+ int replchars(std::vector<std::string>&, const char*, int);
+ int doubletwochars(std::vector<std::string>&, const char*, int);
+ int forgotchar(std::vector<std::string>&, const char*, int);
+ int swapchar(std::vector<std::string>&, const char*, int);
+ int longswapchar(std::vector<std::string>&, const char*, int);
+ int movechar(std::vector<std::string>&, const char*, int);
+ int extrachar(std::vector<std::string>&, const char*, int);
+ int badcharkey(std::vector<std::string>&, const char*, int);
+ int badchar(std::vector<std::string>&, const char*, int);
+ int twowords(std::vector<std::string>&, const char*, int);
+
+ void capchars_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int doubletwochars_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int forgotchar_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int extrachar_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int badcharkey_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int badchar_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int swapchar_utf(std::vector<std::string>&, const w_char*, int wl, int);
+ int longswapchar_utf(std::vector<std::string>&, const w_char*, int, int);
+ int movechar_utf(std::vector<std::string>&, const w_char*, int, int);
+
+ int mapchars(std::vector<std::string>&, const char*, int);
int map_related(const char*,
std::string&,
int,
- char** wlst,
- int,
- int,
- const mapentry*,
+ std::vector<std::string>& wlst,
int,
+ const std::vector<mapentry>&,
int*,
clock_t*);
+ int ngram(int n, const std::vector<w_char>& su1,
+ const std::vector<w_char>& su2, int opt);
int ngram(int n, const std::string& s1, const std::string& s2, int opt);
int mystrlen(const char* word);
+ int leftcommonsubstring(const std::vector<w_char>& su1,
+ const std::vector<w_char>& su2);
int leftcommonsubstring(const char* s1, const char* s2);
int commoncharacterpositions(const char* s1, const char* s2, int* is_swap);
void bubblesort(char** rwd, char** rwd2, int* rsc, int n);
void lcs(const char* s, const char* s2, int* l1, int* l2, char** result);
int lcslen(const char* s, const char* s2);
int lcslen(const std::string& s, const std::string& s2);
- char* suggest_hentry_gen(hentry* rv, const char* pattern);
+ std::string suggest_hentry_gen(hentry* rv, const char* pattern);
};
#endif