diff --git a/CMake_Win.cmake b/CMake_Win.cmake index 0c6d71b7..03f92ea6 100644 --- a/CMake_Win.cmake +++ b/CMake_Win.cmake @@ -15,16 +15,14 @@ foreach (A_WIN_LIB ${WINLIBS_FILES}) target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB}) endforeach () -file(GLOB WINLIBS_FILES "${CMAKE_SOURCE_DIR}/winlibs/lib/xapian/rel/*.lib") -foreach (A_WIN_LIB ${WINLIBS_FILES}) - target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB}) -endforeach () - -# zim dependencies -file(GLOB WINLIBS_FILES "${CMAKE_SOURCE_DIR}/winlibs/lib/*.lib") -foreach (A_WIN_LIB ${WINLIBS_FILES}) - target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB}) -endforeach () +set(THIRD_PARTY_LIBARY + debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/lzma.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/lzma.lib + debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zstd.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zstd.lib + debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/xapian.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/xapian.lib + debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/hunspell-1.7.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/hunspell-1.7.lib + debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zim.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zim.lib + ) +target_link_libraries(${GOLDENDICT} PRIVATE ${THIRD_PARTY_LIBARY}) # Copy .dlls to output dir @@ -34,13 +32,11 @@ foreach (A_DLL_FILE ${DLL_FILES}) configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY) endforeach () -file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/xapian/rel/*.dll") -foreach (A_DLL_FILE ${DLL_FILES}) - get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME) - configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY) -endforeach () - -file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/*.dll") +if (CMAKE_BUILD_TYPE MATCHES Debug) + file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/*.dll") +else () + file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/*.dll") +endif () foreach (A_DLL_FILE ${DLL_FILES}) get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME) configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY) @@ -49,7 +45,9 @@ endforeach () if (WITH_EPWING_SUPPORT) add_subdirectory(thirdparty/eb EXCLUDE_FROM_ALL) target_include_directories(${GOLDENDICT} PRIVATE - thirdparty - ) + thirdparty + ) target_link_libraries(${GOLDENDICT} PRIVATE eb) + + set_target_properties(eb PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) endif () diff --git a/goldendict.pro b/goldendict.pro index aa917ef0..4e2580be 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -74,8 +74,8 @@ contains(DEFINES, MAKE_QTMULTIMEDIA_PLAYER|MAKE_FFMPEG_PLAYER) { #xapian is the must option now. win32{ - Debug: LIBS+= -L$$PWD/winlibs/lib/xapian/dbg/ -lxapian - Release: LIBS+= -L$$PWD/winlibs/lib/xapian/rel/ -lxapian + Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lxapian + Release: LIBS+= -L$$PWD/winlibs/lib -lxapian }else{ LIBS += -lxapian } @@ -150,9 +150,8 @@ win32 { # QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly LIBS += -lshell32 -luser32 -lsapi -lole32 - Debug: LIBS+= -lhunspelld - Release: LIBS+= -lhunspell - HUNSPELL_LIB = hunspell + Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lhunspell-1.7 + Release: LIBS+= -L$$PWD/winlibs/lib/ -lhunspell-1.7 } LIBS += -lwsock32 \ diff --git a/winlibs/include/hunspell/affentry.hxx b/winlibs/include/hunspell/affentry.hxx deleted file mode 100644 index 4bafc043..00000000 --- a/winlibs/include/hunspell/affentry.hxx +++ /dev/null @@ -1,223 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef AFFIX_HXX_ -#define AFFIX_HXX_ - -#include "atypes.hxx" -#include "baseaffix.hxx" -#include "affixmgr.hxx" - -/* A Prefix Entry */ - -class PfxEntry : public AffEntry { - private: - PfxEntry(const PfxEntry&); - PfxEntry& operator=(const PfxEntry&); - - private: - AffixMgr* pmyMgr; - - PfxEntry* next; - PfxEntry* nexteq; - PfxEntry* nextne; - PfxEntry* flgnxt; - - public: - explicit PfxEntry(AffixMgr* pmgr); - - bool allowCross() const { return ((opts & aeXPRODUCT) != 0); } - struct hentry* checkword(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - - struct hentry* check_twosfx(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - - std::string check_morph(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - - std::string check_twosfx_morph(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - - FLAG getFlag() { return aflag; } - const char* getKey() { return appnd.c_str(); } - std::string add(const char* word, size_t len); - - inline short getKeyLen() { return appnd.size(); } - - inline const char* getMorph() { return morphcode; } - - inline const unsigned short* getCont() { return contclass; } - inline short getContLen() { return contclasslen; } - - inline PfxEntry* getNext() { return next; } - inline PfxEntry* getNextNE() { return nextne; } - inline PfxEntry* getNextEQ() { return nexteq; } - inline PfxEntry* getFlgNxt() { return flgnxt; } - - inline void setNext(PfxEntry* ptr) { next = ptr; } - inline void setNextNE(PfxEntry* ptr) { nextne = ptr; } - inline void setNextEQ(PfxEntry* ptr) { nexteq = ptr; } - inline void setFlgNxt(PfxEntry* ptr) { flgnxt = ptr; } - - inline char* nextchar(char* p); - inline int test_condition(const char* st); -}; - -/* A Suffix Entry */ - -class SfxEntry : public AffEntry { - private: - SfxEntry(const SfxEntry&); - SfxEntry& operator=(const SfxEntry&); - - private: - AffixMgr* pmyMgr; - std::string rappnd; - - SfxEntry* next; - SfxEntry* nexteq; - SfxEntry* nextne; - SfxEntry* flgnxt; - - SfxEntry* l_morph; - SfxEntry* r_morph; - SfxEntry* eq_morph; - - public: - explicit SfxEntry(AffixMgr* pmgr); - - bool allowCross() const { return ((opts & aeXPRODUCT) != 0); } - struct hentry* checkword(const char* word, - int len, - int optflags, - PfxEntry* ppfx, - const FLAG cclass, - const FLAG needflag, - const FLAG badflag); - - struct hentry* check_twosfx(const char* word, - int len, - int optflags, - PfxEntry* ppfx, - const FLAG needflag = FLAG_NULL); - - std::string check_twosfx_morph(const char* word, - int len, - int optflags, - PfxEntry* ppfx, - const FLAG needflag = FLAG_NULL); - struct hentry* get_next_homonym(struct hentry* he); - struct hentry* get_next_homonym(struct hentry* word, - int optflags, - PfxEntry* ppfx, - const FLAG cclass, - const FLAG needflag); - - FLAG getFlag() { return aflag; } - const char* getKey() { return rappnd.c_str(); } - std::string add(const char* word, size_t len); - - inline const char* getMorph() { return morphcode; } - - inline const unsigned short* getCont() { return contclass; } - inline short getContLen() { return contclasslen; } - inline const char* getAffix() { return appnd.c_str(); } - - inline short getKeyLen() { return appnd.size(); } - - inline SfxEntry* getNext() { return next; } - inline SfxEntry* getNextNE() { return nextne; } - inline SfxEntry* getNextEQ() { return nexteq; } - - inline SfxEntry* getLM() { return l_morph; } - inline SfxEntry* getRM() { return r_morph; } - inline SfxEntry* getEQM() { return eq_morph; } - inline SfxEntry* getFlgNxt() { return flgnxt; } - - inline void setNext(SfxEntry* ptr) { next = ptr; } - inline void setNextNE(SfxEntry* ptr) { nextne = ptr; } - inline void setNextEQ(SfxEntry* ptr) { nexteq = ptr; } - inline void setFlgNxt(SfxEntry* ptr) { flgnxt = ptr; } - void initReverseWord(); - - inline char* nextchar(char* p); - inline int test_condition(const char* st, const char* begin); -}; - -#endif diff --git a/winlibs/include/hunspell/affixmgr.hxx b/winlibs/include/hunspell/affixmgr.hxx deleted file mode 100644 index d41e69cf..00000000 --- a/winlibs/include/hunspell/affixmgr.hxx +++ /dev/null @@ -1,369 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef AFFIXMGR_HXX_ -#define AFFIXMGR_HXX_ - -#include - -#include -#include - -#include "atypes.hxx" -#include "baseaffix.hxx" -#include "hashmgr.hxx" -#include "phonet.hxx" -#include "replist.hxx" - -// check flag duplication -#define dupSFX (1 << 0) -#define dupPFX (1 << 1) - -class PfxEntry; -class SfxEntry; - -class AffixMgr { - PfxEntry* pStart[SETSIZE]; - SfxEntry* sStart[SETSIZE]; - PfxEntry* pFlag[SETSIZE]; - SfxEntry* sFlag[SETSIZE]; - const std::vector& alldic; - const HashMgr* pHMgr; - std::string keystring; - std::string trystring; - std::string encoding; - struct cs_info* csconv; - int utf8; - int complexprefixes; - FLAG compoundflag; - FLAG compoundbegin; - FLAG compoundmiddle; - FLAG compoundend; - FLAG compoundroot; - FLAG compoundforbidflag; - FLAG compoundpermitflag; - int compoundmoresuffixes; - int checkcompounddup; - int checkcompoundrep; - int checkcompoundcase; - int checkcompoundtriple; - int simplifiedtriple; - FLAG forbiddenword; - FLAG nosuggest; - FLAG nongramsuggest; - FLAG needaffix; - int cpdmin; - bool parsedrep; - std::vector reptable; - RepList* iconvtable; - RepList* oconvtable; - bool parsedmaptable; - std::vector maptable; - bool parsedbreaktable; - std::vector breaktable; - bool parsedcheckcpd; - std::vector checkcpdtable; - int simplifiedcpd; - bool parseddefcpd; - std::vector defcpdtable; - phonetable* phone; - int maxngramsugs; - int maxcpdsugs; - int maxdiff; - int onlymaxdiff; - int nosplitsugs; - int sugswithdots; - int cpdwordmax; - int cpdmaxsyllable; - std::string cpdvowels; // vowels (for calculating of Hungarian compounding limit, - std::vector cpdvowels_utf16; //vowels for UTF-8 encoding - std::string cpdsyllablenum; // syllable count incrementing flag - const char* pfxappnd; // BUG: not stateless - const char* sfxappnd; // BUG: not stateless - int sfxextra; // BUG: not stateless - FLAG sfxflag; // BUG: not stateless - char* derived; // BUG: not stateless - SfxEntry* sfx; // BUG: not stateless - PfxEntry* pfx; // BUG: not stateless - int checknum; - std::string wordchars; // letters + spec. word characters - std::vector wordchars_utf16; - std::string ignorechars; // letters + spec. word characters - std::vector ignorechars_utf16; - std::string version; // affix and dictionary file version string - std::string lang; // language - int langnum; - FLAG lemma_present; - FLAG circumfix; - FLAG onlyincompound; - FLAG keepcase; - FLAG forceucase; - FLAG warn; - int forbidwarn; - FLAG substandard; - int checksharps; - int fullstrip; - - int havecontclass; // boolean variable - char contclasses[CONTSIZE]; // flags of possible continuing classes (twofold - // affix) - - public: - AffixMgr(const char* affpath, const std::vector& ptr, const char* key = NULL); - ~AffixMgr(); - struct hentry* affix_check(const char* word, - int len, - const unsigned short needflag = (unsigned short)0, - char in_compound = IN_CPD_NOT); - struct hentry* prefix_check(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - inline int isSubset(const char* s1, const char* s2); - struct hentry* prefix_check_twosfx(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - inline int isRevSubset(const char* s1, const char* end_of_s2, int len); - struct hentry* suffix_check(const char* word, - int len, - int sfxopts, - PfxEntry* ppfx, - const FLAG cclass = FLAG_NULL, - const FLAG needflag = FLAG_NULL, - char in_compound = IN_CPD_NOT); - struct hentry* suffix_check_twosfx(const char* word, - int len, - int sfxopts, - PfxEntry* ppfx, - const FLAG needflag = FLAG_NULL); - - std::string affix_check_morph(const char* word, - int len, - const FLAG needflag = FLAG_NULL, - char in_compound = IN_CPD_NOT); - std::string prefix_check_morph(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - std::string suffix_check_morph(const char* word, - int len, - int sfxopts, - PfxEntry* ppfx, - const FLAG cclass = FLAG_NULL, - const FLAG needflag = FLAG_NULL, - char in_compound = IN_CPD_NOT); - - std::string prefix_check_twosfx_morph(const char* word, - int len, - char in_compound, - const FLAG needflag = FLAG_NULL); - std::string suffix_check_twosfx_morph(const char* word, - int len, - int sfxopts, - PfxEntry* ppfx, - const FLAG needflag = FLAG_NULL); - - std::string morphgen(const char* ts, - int wl, - const unsigned short* ap, - unsigned short al, - const char* morph, - const char* targetmorph, - int level); - - int expand_rootword(struct guessword* wlst, - int maxn, - const char* ts, - int wl, - const unsigned short* ap, - unsigned short al, - const char* bad, - int, - const char*); - - short get_syllable(const std::string& word); - int cpdrep_check(const char* word, int len); - int cpdpat_check(const char* word, - int len, - hentry* r1, - hentry* r2, - const char affixed); - int defcpd_check(hentry*** words, - short wnum, - hentry* rv, - hentry** rwords, - char all); - int cpdcase_check(const char* word, int len); - inline int candidate_check(const char* word, int len); - void setcminmax(int* cmin, int* cmax, const char* word, int len); - struct hentry* compound_check(const std::string& word, - short wordnum, - short numsyllable, - short maxwordnum, - short wnum, - hentry** words, - hentry** rwords, - char hu_mov_rule, - char is_sug, - int* info); - - int compound_check_morph(const char* word, - int len, - short wordnum, - short numsyllable, - short maxwordnum, - short wnum, - hentry** words, - hentry** rwords, - char hu_mov_rule, - std::string& result, - const std::string* partresult); - - std::vector get_suffix_words(short unsigned* suff, - int len, - const char* root_word); - - struct hentry* lookup(const char* word); - const std::vector& get_reptable() const; - RepList* get_iconvtable() const; - RepList* get_oconvtable() const; - struct phonetable* get_phonetable() const; - const std::vector& get_maptable() const; - const std::vector& get_breaktable() const; - const std::string& get_encoding(); - int get_langnum() const; - char* get_key_string(); - char* get_try_string() const; - const std::string& get_wordchars() const; - const std::vector& get_wordchars_utf16() const; - const char* get_ignore() const; - const std::vector& get_ignore_utf16() const; - int get_compound() const; - FLAG get_compoundflag() const; - FLAG get_forbiddenword() const; - FLAG get_nosuggest() const; - FLAG get_nongramsuggest() const; - FLAG get_needaffix() const; - FLAG get_onlyincompound() const; - const char* get_derived() const; - const std::string& get_version() const; - int have_contclass() const; - int get_utf8() const; - int get_complexprefixes() const; - char* get_suffixed(char) const; - int get_maxngramsugs() const; - int get_maxcpdsugs() const; - int get_maxdiff() const; - int get_onlymaxdiff() const; - int get_nosplitsugs() const; - int get_sugswithdots(void) const; - FLAG get_keepcase(void) const; - FLAG get_forceucase(void) const; - FLAG get_warn(void) const; - int get_forbidwarn(void) const; - int get_checksharps(void) const; - char* encode_flag(unsigned short aflag) const; - int get_fullstrip() const; - - private: - int parse_file(const char* affpath, const char* key); - bool parse_flag(const std::string& line, unsigned short* out, FileMgr* af); - bool parse_num(const std::string& line, int* out, FileMgr* af); - bool parse_cpdsyllable(const std::string& line, FileMgr* af); - bool parse_reptable(const std::string& line, FileMgr* af); - bool parse_convtable(const std::string& line, - FileMgr* af, - RepList** rl, - const std::string& keyword); - bool parse_phonetable(const std::string& line, FileMgr* af); - bool parse_maptable(const std::string& line, FileMgr* af); - bool parse_breaktable(const std::string& line, FileMgr* af); - bool parse_checkcpdtable(const std::string& line, FileMgr* af); - bool parse_defcpdtable(const std::string& line, FileMgr* af); - bool parse_affix(const std::string& line, const char at, FileMgr* af, char* dupflags); - - void reverse_condition(std::string&); - std::string& debugflag(std::string& result, unsigned short flag); - int condlen(const char*); - int encodeit(AffEntry& entry, const char* cs); - int build_pfxtree(PfxEntry* pfxptr); - int build_sfxtree(SfxEntry* sfxptr); - int process_pfx_order(); - int process_sfx_order(); - PfxEntry* process_pfx_in_order(PfxEntry* ptr, PfxEntry* nptr); - SfxEntry* process_sfx_in_order(SfxEntry* ptr, SfxEntry* nptr); - int process_pfx_tree_to_list(); - int process_sfx_tree_to_list(); - int redundant_condition(char, const char* strip, int stripl, const char* cond, int); - void finishFileMgr(FileMgr* afflst); -}; - -#endif diff --git a/winlibs/include/hunspell/atypes.hxx b/winlibs/include/hunspell/atypes.hxx index f8415231..1b78d472 100644 --- a/winlibs/include/hunspell/atypes.hxx +++ b/winlibs/include/hunspell/atypes.hxx @@ -1,7 +1,7 @@ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * - * Copyright (C) 2002-2017 Németh László + * Copyright (C) 2002-2022 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 @@ -95,6 +95,16 @@ static inline void HUNSPELL_WARNING(FILE*, const char*, ...) {} #define TESTAFF(a, b, c) (std::binary_search(a, a + c, b)) +// timelimit: max. ~1/4 sec (process time on Linux) for +// for a suggestion, including max. ~/10 sec for a case +// sensitive plain or compound word suggestion, within +// ~1/20 sec long time consuming suggestion functions +#define TIMELIMIT_GLOBAL (CLOCKS_PER_SEC / 4) +#define TIMELIMIT_SUGGESTION (CLOCKS_PER_SEC / 10) +#define TIMELIMIT (CLOCKS_PER_SEC / 20) +#define MINTIMER 100 +#define MAXPLUSTIMER 100 + struct guessword { char* word; bool allow; diff --git a/winlibs/include/hunspell/baseaffix.hxx b/winlibs/include/hunspell/baseaffix.hxx deleted file mode 100644 index 9191dba4..00000000 --- a/winlibs/include/hunspell/baseaffix.hxx +++ /dev/null @@ -1,74 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef BASEAFF_HXX_ -#define BASEAFF_HXX_ - -#include - -class AffEntry { - private: - AffEntry(const AffEntry&); - AffEntry& operator=(const AffEntry&); - - public: - AffEntry() - : numconds(0), - opts(0), - aflag(0), - morphcode(0), - contclass(NULL), - contclasslen(0) {} - virtual ~AffEntry(); - std::string appnd; - std::string strip; - unsigned char numconds; - char opts; - unsigned short aflag; - union { - char conds[MAXCONDLEN]; - struct { - char conds1[MAXCONDLEN_1]; - char* conds2; - } l; - } c; - char* morphcode; - unsigned short* contclass; - short contclasslen; -}; - -#endif diff --git a/winlibs/include/hunspell/csutil.hxx b/winlibs/include/hunspell/csutil.hxx deleted file mode 100644 index 5d83f809..00000000 --- a/winlibs/include/hunspell/csutil.hxx +++ /dev/null @@ -1,314 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef CSUTIL_HXX_ -#define CSUTIL_HXX_ - -#include "hunvisapi.h" - -// First some base level utility routines - -#include -#include -#include -#include -#include "w_char.hxx" -#include "htypes.hxx" - -#ifdef MOZILLA_CLIENT -#include "nscore.h" // for mozalloc headers -#endif - -// casing -#define NOCAP 0 -#define INITCAP 1 -#define ALLCAP 2 -#define HUHCAP 3 -#define HUHINITCAP 4 - -// default encoding and keystring -#define SPELL_ENCODING "ISO8859-1" -#define SPELL_KEYSTRING "qwertyuiop|asdfghjkl|zxcvbnm" - -// default morphological fields -#define MORPH_STEM "st:" -#define MORPH_ALLOMORPH "al:" -#define MORPH_POS "po:" -#define MORPH_DERI_PFX "dp:" -#define MORPH_INFL_PFX "ip:" -#define MORPH_TERM_PFX "tp:" -#define MORPH_DERI_SFX "ds:" -#define MORPH_INFL_SFX "is:" -#define MORPH_TERM_SFX "ts:" -#define MORPH_SURF_PFX "sp:" -#define MORPH_FREQ "fr:" -#define MORPH_PHON "ph:" -#define MORPH_HYPH "hy:" -#define MORPH_PART "pa:" -#define MORPH_FLAG "fl:" -#define MORPH_HENTRY "_H:" -#define MORPH_TAG_LEN strlen(MORPH_STEM) - -#define MSEP_FLD ' ' -#define MSEP_REC '\n' -#define MSEP_ALT '\v' - -// default flags -#define DEFAULTFLAGS 65510 -#define FORBIDDENWORD 65510 -#define ONLYUPCASEFLAG 65511 - -// fix long pathname problem of WIN32 by using w_char std::fstream::open override -LIBHUNSPELL_DLL_EXPORTED void myopen(std::ifstream& stream, const char* path, - std::ios_base::openmode mode); - -// convert UTF-16 characters to UTF-8 -LIBHUNSPELL_DLL_EXPORTED std::string& u16_u8(std::string& dest, - const std::vector& src); - -// convert UTF-8 characters to UTF-16 -LIBHUNSPELL_DLL_EXPORTED int u8_u16(std::vector& dest, - const std::string& src); - -// remove end of line char(s) -LIBHUNSPELL_DLL_EXPORTED void mychomp(std::string& s); - -// duplicate string -LIBHUNSPELL_DLL_EXPORTED char* mystrdup(const char* s); - -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED std::string::const_iterator mystrsep(const std::string &str, - std::string::const_iterator& start); - -// replace pat by rep in word and return word -LIBHUNSPELL_DLL_EXPORTED std::string& mystrrep(std::string& str, - const std::string& search, - const std::string& replace); - -// append s to ends of every lines in text -LIBHUNSPELL_DLL_EXPORTED std::string& strlinecat(std::string& str, - const std::string& apd); - -// tokenize into lines with new line -LIBHUNSPELL_DLL_EXPORTED std::vector line_tok(const std::string& text, - char breakchar); - -// tokenize into lines with new line and uniq in place -LIBHUNSPELL_DLL_EXPORTED void line_uniq(std::string& text, char breakchar); - -LIBHUNSPELL_DLL_EXPORTED void line_uniq_app(std::string& text, char breakchar); - -// reverse word -LIBHUNSPELL_DLL_EXPORTED size_t reverseword(std::string& word); - -// reverse word -LIBHUNSPELL_DLL_EXPORTED size_t reverseword_utf(std::string&); - -// remove duplicates -LIBHUNSPELL_DLL_EXPORTED void uniqlist(std::vector& list); - -// character encoding information -struct cs_info { - unsigned char ccase; - unsigned char clower; - unsigned char cupper; -}; - -LIBHUNSPELL_DLL_EXPORTED void initialize_utf_tbl(); -LIBHUNSPELL_DLL_EXPORTED void free_utf_tbl(); -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetoupper(unsigned short c, - int langnum); -LIBHUNSPELL_DLL_EXPORTED w_char upper_utf(w_char u, int langnum); -LIBHUNSPELL_DLL_EXPORTED w_char lower_utf(w_char u, int langnum); -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetolower(unsigned short c, - int langnum); -LIBHUNSPELL_DLL_EXPORTED int unicodeisalpha(unsigned short c); - -LIBHUNSPELL_DLL_EXPORTED struct cs_info* get_current_cs(const std::string& es); - -// get language identifiers of language codes -LIBHUNSPELL_DLL_EXPORTED int get_lang_num(const std::string& lang); - -// get characters of the given 8bit encoding with lower- and uppercase forms -LIBHUNSPELL_DLL_EXPORTED std::string get_casechars(const char* enc); - -// convert std::string to all caps -LIBHUNSPELL_DLL_EXPORTED std::string& mkallcap(std::string& s, - const struct cs_info* csconv); - -// convert null terminated string to all little -LIBHUNSPELL_DLL_EXPORTED std::string& mkallsmall(std::string& s, - const struct cs_info* csconv); - -// convert first letter of string to little -LIBHUNSPELL_DLL_EXPORTED std::string& mkinitsmall(std::string& s, - const struct cs_info* csconv); - -// convert first letter of string to capital -LIBHUNSPELL_DLL_EXPORTED std::string& mkinitcap(std::string& s, - const struct cs_info* csconv); - -// convert first letter of UTF-8 string to capital -LIBHUNSPELL_DLL_EXPORTED std::vector& -mkinitcap_utf(std::vector& u, int langnum); - -// convert UTF-8 string to little -LIBHUNSPELL_DLL_EXPORTED std::vector& -mkallsmall_utf(std::vector& u, int langnum); - -// convert first letter of UTF-8 string to little -LIBHUNSPELL_DLL_EXPORTED std::vector& -mkinitsmall_utf(std::vector& u, int langnum); - -// convert UTF-8 string to capital -LIBHUNSPELL_DLL_EXPORTED std::vector& -mkallcap_utf(std::vector& u, int langnum); - -// get type of capitalization -LIBHUNSPELL_DLL_EXPORTED int get_captype(const std::string& q, cs_info*); - -// get type of capitalization (UTF-8) -LIBHUNSPELL_DLL_EXPORTED int get_captype_utf8(const std::vector& q, int langnum); - -// strip all ignored characters in the string -LIBHUNSPELL_DLL_EXPORTED size_t remove_ignored_chars_utf( - std::string& word, - const std::vector& ignored_chars); - -// strip all ignored characters in the string -LIBHUNSPELL_DLL_EXPORTED size_t remove_ignored_chars( - std::string& word, - const std::string& ignored_chars); - -LIBHUNSPELL_DLL_EXPORTED bool parse_string(const std::string& line, - std::string& out, - int ln); - -LIBHUNSPELL_DLL_EXPORTED bool parse_array(const std::string& line, - std::string& out, - std::vector& out_utf16, - int utf8, - int ln); - -LIBHUNSPELL_DLL_EXPORTED int fieldlen(const char* r); - -LIBHUNSPELL_DLL_EXPORTED bool copy_field(std::string& dest, - const std::string& morph, - const std::string& var); - -// conversion function for protected memory -LIBHUNSPELL_DLL_EXPORTED void store_pointer(char* dest, char* source); - -// conversion function for protected memory -LIBHUNSPELL_DLL_EXPORTED char* get_stored_pointer(const char* s); - -// hash entry macros -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_DATA(struct hentry* h) { - char* ret; - if (!h->var) - ret = NULL; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -LIBHUNSPELL_DLL_EXPORTED inline const char* HENTRY_DATA( - const struct hentry* h) { - const char* ret; - if (!h->var) - ret = NULL; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -// NULL-free version for warning-free OOo build -LIBHUNSPELL_DLL_EXPORTED inline const char* HENTRY_DATA2( - const struct hentry* h) { - const char* ret; - if (!h->var) - ret = ""; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_FIND(struct hentry* h, - const char* p) { - return (HENTRY_DATA(h) ? strstr(HENTRY_DATA(h), p) : NULL); -} - -#endif diff --git a/winlibs/include/hunspell/filemgr.hxx b/winlibs/include/hunspell/filemgr.hxx deleted file mode 100644 index 62433aee..00000000 --- a/winlibs/include/hunspell/filemgr.hxx +++ /dev/null @@ -1,98 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* file manager class - read lines of files [filename] OR [filename.hz] */ -#ifndef FILEMGR_HXX_ -#define FILEMGR_HXX_ - -#include "hunzip.hxx" -#include -#include -#include - -class FileMgr { - private: - FileMgr(const FileMgr&); - FileMgr& operator=(const FileMgr&); - - protected: - std::ifstream fin; - Hunzip* hin; - char in[BUFSIZE + 50]; // input buffer - int fail(const char* err, const char* par); - int linenum; - - public: - FileMgr(const char* filename, const char* key = NULL); - ~FileMgr(); - bool getline(std::string&); - int getlinenum(); -}; -#endif diff --git a/winlibs/include/hunspell/hashmgr.hxx b/winlibs/include/hunspell/hashmgr.hxx deleted file mode 100644 index da485d7a..00000000 --- a/winlibs/include/hunspell/hashmgr.hxx +++ /dev/null @@ -1,145 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef HASHMGR_HXX_ -#define HASHMGR_HXX_ - -#include -#include -#include - -#include "htypes.hxx" -#include "filemgr.hxx" -#include "w_char.hxx" - -enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI }; - -class HashMgr { - int tablesize; - struct hentry** tableptr; - flag flag_mode; - int complexprefixes; - int utf8; - unsigned short forbiddenword; - int langnum; - std::string enc; - std::string lang; - struct cs_info* csconv; - std::string ignorechars; - std::vector ignorechars_utf16; - int numaliasf; // flag vector `compression' with aliases - unsigned short** aliasf; - unsigned short* aliasflen; - int numaliasm; // morphological desciption `compression' with aliases - char** aliasm; - - public: - 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; - - int add(const std::string& word); - int add_with_affix(const std::string& word, const std::string& pattern); - int remove(const std::string& word); - int decode_flags(unsigned short** result, const std::string& flags, FileMgr* af) const; - bool decode_flags(std::vector& result, const std::string& flags, FileMgr* af) const; - unsigned short decode_flag(const char* flag) const; - char* encode_flag(unsigned short flag) const; - int is_aliasf() const; - int get_aliasf(int index, unsigned short** fvec, FileMgr* af) const; - int is_aliasm() const; - char* get_aliasm(int index) const; - - private: - int get_clen_and_captype(const std::string& word, int* captype); - int get_clen_and_captype(const std::string& word, int* captype, std::vector &workbuf); - int load_tables(const char* tpath, const char* key); - int add_word(const std::string& word, - int wcl, - unsigned short* ap, - int al, - const std::string* desc, - bool onlyupcase); - int load_config(const char* affpath, const char* key); - bool parse_aliasf(const std::string& line, FileMgr* af); - int add_hidden_capitalized_word(const std::string& word, - int wcl, - unsigned short* flags, - int al, - const std::string* dp, - int captype); - bool parse_aliasm(const std::string& line, FileMgr* af); - int remove_forbidden_flag(const std::string& word); -}; - -#endif diff --git a/winlibs/include/hunspell/htypes.hxx b/winlibs/include/hunspell/htypes.hxx deleted file mode 100644 index 8f66a008..00000000 --- a/winlibs/include/hunspell/htypes.hxx +++ /dev/null @@ -1,68 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef HTYPES_HXX_ -#define HTYPES_HXX_ - -#define ROTATE_LEN 5 - -#define ROTATE(v, q) \ - (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q)) - 1)); - -// hentry options -#define H_OPT (1 << 0) -#define H_OPT_ALIASM (1 << 1) -#define H_OPT_PHON (1 << 2) - -// see also csutil.hxx -#define HENTRY_WORD(h) &(h->word[0]) - -// approx. number of user defined words -#define USERWORD 1000 - -struct hentry { - unsigned char blen; // word length in bytes - unsigned char clen; // word length in characters (different for UTF-8 enc.) - short alen; // length of affix flag vector - unsigned short* astr; // affix flag vector - struct hentry* next; // next word with same hash code - struct hentry* next_homonym; // next homonym word (with same hash code) - char var; // variable fields (only for special pronounciation yet) - char word[1]; // variable-length word (8-bit or UTF-8 encoding) -}; - -#endif diff --git a/winlibs/include/hunspell/hunspell.hxx b/winlibs/include/hunspell/hunspell.hxx index a06bdd43..8640a35c 100644 --- a/winlibs/include/hunspell/hunspell.hxx +++ b/winlibs/include/hunspell/hunspell.hxx @@ -1,7 +1,7 @@ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * - * Copyright (C) 2002-2017 Németh László + * Copyright (C) 2002-2022 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 @@ -78,7 +78,10 @@ #define SPELL_XML "" +#ifndef MAXSUGGESTION #define MAXSUGGESTION 15 +#endif + #define MAXSHARPS 5 #ifndef MAXWORDLEN diff --git a/winlibs/include/hunspell/hunvisapi.h b/winlibs/include/hunspell/hunvisapi.h index eb2b3480..4db2414a 100644 --- a/winlibs/include/hunspell/hunvisapi.h +++ b/winlibs/include/hunspell/hunvisapi.h @@ -3,13 +3,13 @@ #if defined(HUNSPELL_STATIC) # define LIBHUNSPELL_DLL_EXPORTED -#elif defined(_MSC_VER) +#elif defined(_WIN32) # if defined(BUILDING_LIBHUNSPELL) # define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport) # else # define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport) # endif -#elif defined(BUILDING_LIBHUNSPELL) && 1 +#elif defined(BUILDING_LIBHUNSPELL) && 0 # define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default"))) #else # define LIBHUNSPELL_DLL_EXPORTED diff --git a/winlibs/include/hunspell/hunzip.hxx b/winlibs/include/hunspell/hunzip.hxx deleted file mode 100644 index ea2bc58d..00000000 --- a/winlibs/include/hunspell/hunzip.hxx +++ /dev/null @@ -1,87 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -/* hunzip: file decompression for sorted dictionaries with optional encryption, - * algorithm: prefix-suffix encoding and 16-bit Huffman encoding */ - -#ifndef HUNZIP_HXX_ -#define HUNZIP_HXX_ - -#include "hunvisapi.h" - -#include -#include -#include - -#define BUFSIZE 65536 -#define HZIP_EXTENSION ".hz" - -#define MSG_OPEN "error: %s: cannot open\n" -#define MSG_FORMAT "error: %s: not in hzip format\n" -#define MSG_MEMORY "error: %s: missing memory\n" -#define MSG_KEY "error: %s: missing or bad password\n" - -struct bit { - unsigned char c[2]; - int v[2]; -}; - -class LIBHUNSPELL_DLL_EXPORTED Hunzip { - private: - Hunzip(const Hunzip&); - Hunzip& operator=(const Hunzip&); - - protected: - char* filename; - std::ifstream fin; - int bufsiz, lastbit, inc, inbits, outc; - std::vector dec; // code table - char in[BUFSIZE]; // input buffer - char out[BUFSIZE + 1]; // Huffman-decoded buffer - char line[BUFSIZE + 50]; // decoded line - int getcode(const char* key); - int getbuf(); - int fail(const char* err, const char* par); - - public: - Hunzip(const char* filename, const char* key = NULL); - ~Hunzip(); - bool is_open() { return fin.is_open(); } - bool getline(std::string& dest); -}; - -#endif diff --git a/winlibs/include/hunspell/langnum.hxx b/winlibs/include/hunspell/langnum.hxx deleted file mode 100644 index a64d3d78..00000000 --- a/winlibs/include/hunspell/langnum.hxx +++ /dev/null @@ -1,75 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef LANGNUM_HXX_ -#define LANGNUM_HXX_ - -/* - language numbers for language specific codes - see https://wiki.openoffice.org/w/index.php?title=Languages&oldid=230199 -*/ - -enum { - LANG_ar = 96, - LANG_az = 100, // custom number - LANG_bg = 41, - LANG_ca = 37, - LANG_cs = 42, - LANG_da = 45, - LANG_de = 49, - LANG_el = 30, - LANG_en = 01, - LANG_es = 34, - LANG_eu = 10, - LANG_fr = 02, - LANG_gl = 38, - LANG_hr = 78, - LANG_hu = 36, - LANG_it = 39, - LANG_la = 99, // custom number - LANG_lv = 101, // custom number - LANG_nl = 31, - LANG_pl = 48, - LANG_pt = 03, - LANG_ru = 07, - LANG_sv = 50, - LANG_tr = 90, - LANG_uk = 80, - LANG_xx = 999 -}; - -#endif diff --git a/winlibs/include/hunspell/phonet.hxx b/winlibs/include/hunspell/phonet.hxx deleted file mode 100644 index 2d58b3ba..00000000 --- a/winlibs/include/hunspell/phonet.hxx +++ /dev/null @@ -1,50 +0,0 @@ -/* phonetic.c - generic replacement aglogithms for phonetic transformation - Copyright (C) 2000 Bjoern Jacke - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License version 2.1 as published by the Free Software Foundation; - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; If not, see - . - - Changelog: - - 2000-01-05 Bjoern Jacke - Initial Release insprired by the article about phonetic - transformations out of c't 25/1999 - - 2007-07-26 Bjoern Jacke - Released under MPL/GPL/LGPL tri-license for Hunspell - - 2007-08-23 Laszlo Nemeth - Porting from Aspell to Hunspell using C-like structs -*/ - -#ifndef PHONET_HXX_ -#define PHONET_HXX_ - -#define HASHSIZE 256 -#define MAXPHONETLEN 256 -#define MAXPHONETUTF8LEN (MAXPHONETLEN * 4) - -#include "hunvisapi.h" - -struct phonetable { - char utf8; - std::vector rules; - int hash[HASHSIZE]; -}; - -LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable& parms); - -LIBHUNSPELL_DLL_EXPORTED std::string phonet(const std::string& inword, - phonetable& phone); - -#endif diff --git a/winlibs/include/hunspell/replist.hxx b/winlibs/include/hunspell/replist.hxx deleted file mode 100644 index 1e3efa41..00000000 --- a/winlibs/include/hunspell/replist.hxx +++ /dev/null @@ -1,100 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* string replacement list class */ -#ifndef REPLIST_HXX_ -#define REPLIST_HXX_ - -#include "w_char.hxx" - -#include -#include - -class RepList { - private: - RepList(const RepList&); - RepList& operator=(const RepList&); - - protected: - replentry** dat; - int size; - int pos; - - public: - explicit RepList(int n); - ~RepList(); - - int add(const std::string& pat1, const std::string& pat2); - replentry* item(int n); - int find(const char* word); - std::string replace(const char* word, int n, bool atstart); - bool conv(const std::string& word, std::string& dest); -}; -#endif diff --git a/winlibs/include/hunspell/suggestmgr.hxx b/winlibs/include/hunspell/suggestmgr.hxx deleted file mode 100644 index 19ffc03a..00000000 --- a/winlibs/include/hunspell/suggestmgr.hxx +++ /dev/null @@ -1,188 +0,0 @@ -/* ***** 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 - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * 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, - * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, - * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, - * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/* - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada - * And Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All modifications to the source code must be clearly marked as - * such. Binary redistributions based on modified source code - * must be clearly marked as modified versions in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef SUGGESTMGR_HXX_ -#define SUGGESTMGR_HXX_ - -#define MAX_ROOTS 100 -#define MAX_WORDS 100 -#define MAX_GUESS 200 -#define MAXNGRAMSUGS 4 -#define MAXPHONSUGS 2 -#define MAXCOMPOUNDSUGS 3 - -// timelimit: max ~1/4 sec (process time on Linux) for a time consuming function -#define TIMELIMIT (CLOCKS_PER_SEC >> 2) -#define MINTIMER 100 -#define MAXPLUSTIMER 100 - -#define NGRAM_LONGER_WORSE (1 << 0) -#define NGRAM_ANY_MISMATCH (1 << 1) -#define NGRAM_LOWERING (1 << 2) -#define NGRAM_WEIGHTED (1 << 3) - -#include "atypes.hxx" -#include "affixmgr.hxx" -#include "hashmgr.hxx" -#include "langnum.hxx" -#include - -enum { LCS_UP, LCS_LEFT, LCS_UPLEFT }; - -class SuggestMgr { - private: - SuggestMgr(const SuggestMgr&); - SuggestMgr& operator=(const SuggestMgr&); - - private: - char* ckey; - size_t ckeyl; - std::vector ckey_utf; - - char* ctry; - size_t ctryl; - std::vector ctry_utf; - - AffixMgr* pAMgr; - unsigned int maxSug; - struct cs_info* csconv; - int utf8; - int langnum; - int nosplitsugs; - int maxngramsugs; - int maxcpdsugs; - int complexprefixes; - - public: - SuggestMgr(const char* tryme, unsigned int maxn, AffixMgr* aptr); - ~SuggestMgr(); - - void suggest(std::vector& slst, const char* word, int* onlycmpdsug); - void ngsuggest(std::vector& slst, const char* word, const std::vector& rHMgr); - - std::string suggest_morph(const std::string& word); - std::string suggest_gen(const std::vector& pl, const std::string& pattern); - - private: - void testsug(std::vector& 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); - - void capchars(std::vector&, const char*, int); - int replchars(std::vector&, const char*, int); - int doubletwochars(std::vector&, const char*, int); - int forgotchar(std::vector&, const char*, int); - int swapchar(std::vector&, const char*, int); - int longswapchar(std::vector&, const char*, int); - int movechar(std::vector&, const char*, int); - int extrachar(std::vector&, const char*, int); - int badcharkey(std::vector&, const char*, int); - int badchar(std::vector&, const char*, int); - int twowords(std::vector&, const char*, int); - - void capchars_utf(std::vector&, const w_char*, int wl, int); - int doubletwochars_utf(std::vector&, const w_char*, int wl, int); - int forgotchar_utf(std::vector&, const w_char*, int wl, int); - int extrachar_utf(std::vector&, const w_char*, int wl, int); - int badcharkey_utf(std::vector&, const w_char*, int wl, int); - int badchar_utf(std::vector&, const w_char*, int wl, int); - int swapchar_utf(std::vector&, const w_char*, int wl, int); - int longswapchar_utf(std::vector&, const w_char*, int, int); - int movechar_utf(std::vector&, const w_char*, int, int); - - int mapchars(std::vector&, const char*, int); - int map_related(const char*, - std::string&, - int, - std::vector& wlst, - int, - const std::vector&, - int*, - clock_t*); - int ngram(int n, const std::vector& su1, - const std::vector& 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& su1, - const std::vector& 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); - std::string suggest_hentry_gen(hentry* rv, const char* pattern); -}; - -#endif diff --git a/winlibs/include/hunspell/w_char.hxx b/winlibs/include/hunspell/w_char.hxx index 5accb756..7e71d046 100644 --- a/winlibs/include/hunspell/w_char.hxx +++ b/winlibs/include/hunspell/w_char.hxx @@ -1,7 +1,7 @@ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * - * Copyright (C) 2002-2017 Németh László + * Copyright (C) 2002-2022 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 diff --git a/winlibs/lib/charset-1.dll b/winlibs/lib/charset-1.dll new file mode 100644 index 00000000..edcf1066 Binary files /dev/null and b/winlibs/lib/charset-1.dll differ diff --git a/winlibs/lib/dbg/charset-1.dll b/winlibs/lib/dbg/charset-1.dll new file mode 100644 index 00000000..f7287c6f Binary files /dev/null and b/winlibs/lib/dbg/charset-1.dll differ diff --git a/winlibs/lib/dbg/hunspell-1.7-0.dll b/winlibs/lib/dbg/hunspell-1.7-0.dll new file mode 100644 index 00000000..bd76251d Binary files /dev/null and b/winlibs/lib/dbg/hunspell-1.7-0.dll differ diff --git a/winlibs/lib/dbg/hunspell-1.7.lib b/winlibs/lib/dbg/hunspell-1.7.lib new file mode 100644 index 00000000..263cff89 Binary files /dev/null and b/winlibs/lib/dbg/hunspell-1.7.lib differ diff --git a/winlibs/lib/dbg/iconv-2.dll b/winlibs/lib/dbg/iconv-2.dll new file mode 100644 index 00000000..5ad5d468 Binary files /dev/null and b/winlibs/lib/dbg/iconv-2.dll differ diff --git a/winlibs/lib/xapian/dbg/xapian-30.dll b/winlibs/lib/dbg/xapian-30.dll similarity index 99% rename from winlibs/lib/xapian/dbg/xapian-30.dll rename to winlibs/lib/dbg/xapian-30.dll index 07a860d7..c9c135e5 100644 Binary files a/winlibs/lib/xapian/dbg/xapian-30.dll and b/winlibs/lib/dbg/xapian-30.dll differ diff --git a/winlibs/lib/xapian/dbg/xapian.lib b/winlibs/lib/dbg/xapian.lib similarity index 100% rename from winlibs/lib/xapian/dbg/xapian.lib rename to winlibs/lib/dbg/xapian.lib diff --git a/winlibs/lib/hunspell-1.7-0.dll b/winlibs/lib/hunspell-1.7-0.dll new file mode 100644 index 00000000..8cec7b7d Binary files /dev/null and b/winlibs/lib/hunspell-1.7-0.dll differ diff --git a/winlibs/lib/hunspell-1.7.lib b/winlibs/lib/hunspell-1.7.lib new file mode 100644 index 00000000..263cff89 Binary files /dev/null and b/winlibs/lib/hunspell-1.7.lib differ diff --git a/winlibs/lib/iconv-2.dll b/winlibs/lib/iconv-2.dll new file mode 100644 index 00000000..fd1df8e1 Binary files /dev/null and b/winlibs/lib/iconv-2.dll differ diff --git a/winlibs/lib/msvc/hunspell.lib b/winlibs/lib/msvc/hunspell.lib deleted file mode 100644 index 2655a18c..00000000 Binary files a/winlibs/lib/msvc/hunspell.lib and /dev/null differ diff --git a/winlibs/lib/msvc/hunspelld.lib b/winlibs/lib/msvc/hunspelld.lib deleted file mode 100644 index 197f629c..00000000 Binary files a/winlibs/lib/msvc/hunspelld.lib and /dev/null differ diff --git a/winlibs/lib/xapian/rel/xapian-30.dll b/winlibs/lib/xapian-30.dll similarity index 99% rename from winlibs/lib/xapian/rel/xapian-30.dll rename to winlibs/lib/xapian-30.dll index a34a5301..29ff2ef5 100644 Binary files a/winlibs/lib/xapian/rel/xapian-30.dll and b/winlibs/lib/xapian-30.dll differ diff --git a/winlibs/lib/xapian/rel/xapian.lib b/winlibs/lib/xapian.lib similarity index 100% rename from winlibs/lib/xapian/rel/xapian.lib rename to winlibs/lib/xapian.lib