summaryrefslogtreecommitdiff
path: root/libs/hunspell/src/hunspell.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hunspell/src/hunspell.hxx')
-rw-r--r--libs/hunspell/src/hunspell.hxx139
1 files changed, 53 insertions, 86 deletions
diff --git a/libs/hunspell/src/hunspell.hxx b/libs/hunspell/src/hunspell.hxx
index 3bcf75e39c..a06bdd43ab 100644
--- a/libs/hunspell/src/hunspell.hxx
+++ b/libs/hunspell/src/hunspell.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,
@@ -70,26 +67,33 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+#ifndef MYSPELLMGR_HXX_
+#define MYSPELLMGR_HXX_
#include "hunvisapi.h"
-
-#include "hashmgr.hxx"
-#include "affixmgr.hxx"
-#include "suggestmgr.hxx"
-#include "langnum.hxx"
+#include "w_char.hxx"
+#include "atypes.hxx"
+#include <string>
#include <vector>
#define SPELL_XML "<?xml?>"
-#define MAXDIC 20
#define MAXSUGGESTION 15
#define MAXSHARPS 5
-#define HUNSPELL_OK (1 << 0)
-#define HUNSPELL_OK_WARN (1 << 1)
+#ifndef MAXWORDLEN
+#define MAXWORDLEN 100
+#endif
-#ifndef _MYSPELLMGR_HXX_
-#define _MYSPELLMGR_HXX_
+#if defined __GNUC__ && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+# define H_DEPRECATED __attribute__((__deprecated__))
+#elif defined(_MSC_VER) && (_MSC_VER >= 1300)
+# define H_DEPRECATED __declspec(deprecated)
+#else
+# define H_DEPRECATED
+#endif
+
+class HunspellImpl;
class LIBHUNSPELL_DLL_EXPORTED Hunspell {
private:
@@ -97,17 +101,7 @@ class LIBHUNSPELL_DLL_EXPORTED Hunspell {
Hunspell& operator=(const Hunspell&);
private:
- AffixMgr* pAMgr;
- HashMgr* pHMgr[MAXDIC];
- int maxdic;
- SuggestMgr* pSMgr;
- char* affixpath;
- char* encoding;
- struct cs_info* csconv;
- int langnum;
- int utf8;
- int complexprefixes;
- char** wordbreak;
+ HunspellImpl* m_Impl;
public:
/* Hunspell(aff, dic) - constructor of Hunspell class
@@ -125,7 +119,7 @@ class LIBHUNSPELL_DLL_EXPORTED Hunspell {
int add_dic(const char* dpath, const char* key = NULL);
/* spell(word) - spellcheck word
- * output: 0 = bad word, not 0 = good word
+ * output: false = bad word, true = good word
*
* plus output:
* info: information bit array, fields:
@@ -133,8 +127,8 @@ class LIBHUNSPELL_DLL_EXPORTED Hunspell {
* SPELL_FORBIDDEN = an explicit forbidden word
* root: root (stem), when input is a word with affix(es)
*/
-
- int spell(const char* word, int* info = NULL, char** root = NULL);
+ bool spell(const std::string& word, int* info = NULL, std::string* root = NULL);
+ H_DEPRECATED int spell(const char* word, int* info = NULL, char** root = NULL);
/* suggest(suggestions, word) - search suggestions
* input: pointer to an array of strings pointer and the (bad) word
@@ -143,8 +137,8 @@ class LIBHUNSPELL_DLL_EXPORTED Hunspell {
* a newly allocated array of strings (*slts will be NULL when number
* of suggestion equals 0.)
*/
-
- int suggest(char*** slst, const char* word);
+ std::vector<std::string> suggest(const std::string& word);
+ H_DEPRECATED int suggest(char*** slst, const char* word);
/* Suggest words from suffix rules
* suffix_suggest(suggestions, root_word)
@@ -154,36 +148,37 @@ class LIBHUNSPELL_DLL_EXPORTED Hunspell {
* a newly allocated array of strings (*slts will be NULL when number
* of suggestion equals 0.)
*/
- int suffix_suggest(char*** slst, const char* root_word);
+ std::vector<std::string> suffix_suggest(const std::string& root_word);
+ H_DEPRECATED int suffix_suggest(char*** slst, const char* root_word);
/* deallocate suggestion lists */
+ H_DEPRECATED void free_list(char*** slst, int n);
- void free_list(char*** slst, int n);
-
+ const std::string& get_dict_encoding() const;
char* get_dic_encoding();
/* morphological functions */
/* analyze(result, word) - morphological analysis of the word */
+ std::vector<std::string> analyze(const std::string& word);
+ H_DEPRECATED int analyze(char*** slst, const char* word);
- int analyze(char*** slst, const char* word);
+ /* stem(word) - stemmer function */
+ std::vector<std::string> stem(const std::string& word);
+ H_DEPRECATED int stem(char*** slst, const char* word);
- /* stem(result, word) - stemmer function */
-
- int stem(char*** slst, const char* word);
-
- /* stem(result, analysis, n) - get stems from a morph. analysis
+ /* stem(analysis, n) - get stems from a morph. analysis
* example:
* char ** result, result2;
* int n1 = analyze(&result, "words");
* int n2 = stem(&result2, result, n1);
*/
-
- int stem(char*** slst, char** morph, int n);
+ std::vector<std::string> stem(const std::vector<std::string>& morph);
+ H_DEPRECATED int stem(char*** slst, char** morph, int n);
/* generate(result, word, word2) - morphological generation by example(s) */
-
- int generate(char*** slst, const char* word, const char* word2);
+ std::vector<std::string> generate(const std::string& word, const std::string& word2);
+ H_DEPRECATED int generate(char*** slst, const char* word, const char* word2);
/* generate(result, word, desc, n) - generation by morph. description(s)
* example:
@@ -192,71 +187,43 @@ class LIBHUNSPELL_DLL_EXPORTED Hunspell {
* int n = generate(&result, "word", &affix, 1);
* for (int i = 0; i < n; i++) printf("%s\n", result[i]);
*/
-
- int generate(char*** slst, const char* word, char** desc, int n);
+ std::vector<std::string> generate(const std::string& word, const std::vector<std::string>& pl);
+ H_DEPRECATED int generate(char*** slst, const char* word, char** desc, int n);
/* functions for run-time modification of the dictionary */
/* add word to the run-time dictionary */
- int add(const char* word);
+ int add(const std::string& word);
/* add word to the run-time dictionary with affix flags of
* the example (a dictionary word): Hunspell will recognize
* affixed forms of the new word, too.
*/
- int add_with_affix(const char* word, const char* example);
+ int add_with_affix(const std::string& word, const std::string& example);
/* remove word from the run-time dictionary */
- int remove(const char* word);
+ int remove(const std::string& word);
/* other */
/* get extra word characters definied in affix file for tokenization */
- const char* get_wordchars();
- const std::vector<w_char>& get_wordchars_utf16();
+ const char* get_wordchars() const;
+ const std::string& get_wordchars_cpp() const;
+ const std::vector<w_char>& get_wordchars_utf16() const;
struct cs_info* get_csconv();
- const char* get_version();
+
+ const char* get_version() const;
+ const std::string& get_version_cpp() const;
int get_langnum() const;
/* need for putdic */
- int input_conv(const char* word, char* dest, size_t destsize);
-
- inline char *get_try_string()
- {
- return pAMgr->get_try_string();
- }
-
- private:
- void cleanword(std::string& dest, const char*, int* pcaptype, int* pabbrev);
- size_t cleanword2(std::string& dest,
- std::vector<w_char>& dest_u,
- const char*,
- int* w_len,
- int* pcaptype,
- size_t* pabbrev);
- void mkinitcap(std::string& u8);
- int mkinitcap2(std::string& u8, std::vector<w_char>& u16);
- int mkinitsmall2(std::string& u8, std::vector<w_char>& u16);
- void mkallcap(std::string& u8);
- int mkallsmall2(std::string& u8, std::vector<w_char>& u16);
- struct hentry* checkword(const char*, int* info, char** root);
- std::string sharps_u8_l1(const std::string& source);
- hentry*
- spellsharps(std::string& base, size_t start_pos, int, int, int* info, char** root);
- int is_keepcase(const hentry* rv);
- int insert_sug(char*** slst, const char* word, int ns);
- void cat_result(std::string& result, char* st);
- char* stem_description(const char* desc);
- int spellml(char*** slst, const char* word);
- std::string get_xml_par(const char* par);
- const char* get_xml_pos(const char* s, const char* attr);
- int get_xml_list(char*** slst, const char* list, const char* tag);
- int check_xml_par(const char* q, const char* attr, const char* value);
+ bool input_conv(const std::string& word, std::string& dest);
+ H_DEPRECATED int input_conv(const char* word, char* dest, size_t destsize);
};
#endif