4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
10 * Full author contact details are available in file CREDITS.
16 #include "support/strfwd.h"
27 * Pure virtual base class of all spellchecker implementations.
32 /// the result from checking a single word
36 /// root of given word was found
38 /// word found through compound formation
42 /// number of other ignored "word"
44 /// number of personal dictionary "word"
46 /// missing dictionary for language
50 virtual ~SpellChecker() {}
52 /// does the spell check failed
53 static bool misspelled(Result res) {
55 && res != IGNORED_WORD
56 && res != NO_DICTIONARY
57 && res != LEARNED_WORD; }
59 /// check the given word of the given lang code and return the result
60 virtual enum Result check(WordLangTuple const &) = 0;
62 /// Gives suggestions.
63 virtual void suggest(WordLangTuple const &, docstring_list & suggestions) = 0;
65 /// Lemmatizing: return stem of word (used by Thesaurus).
66 virtual void stem(WordLangTuple const &, docstring_list & suggestions) = 0;
68 /// insert the given word into the personal dictionary
69 virtual void insert(WordLangTuple const &) = 0;
71 /// remove the given word from the personal dictionary
72 virtual void remove(WordLangTuple const &) = 0;
74 /// accept the given word temporarily
75 virtual void accept(WordLangTuple const &) = 0;
77 /// check if dictionary exists
78 virtual bool hasDictionary(Language const *) const = 0;
80 /// how many valid dictionaries were found
81 virtual int numDictionaries() const = 0;
83 /// if speller can spell check whole paragraph return true
84 virtual bool canCheckParagraph() const { return false; }
86 /// count of misspelled words
87 virtual int numMisspelledWords() const { return 0; }
89 /// start position and length of misspelled word at index
90 virtual void misspelledWord(
92 int & start, int & length) const
94 /// index is used here to make the compiler happy
99 /// give an error message on messy exit
100 virtual docstring const error() = 0;
102 /// spell checker state versioning support
103 typedef unsigned long int ChangeNumber ;
104 ChangeNumber changeNumber() const { return change_number_; }
105 void changeNumber(ChangeNumber value) { change_number_ = value; }
106 void nextChangeNumber() { ++change_number_; }
107 virtual void advanceChangeNumber() = 0;
110 ChangeNumber change_number_;
113 /// Access to the singleton SpellChecker.
114 /// Implemented in LyX.cpp
115 SpellChecker * theSpellChecker();
117 /// Set the singleton SpellChecker engine.
118 /// Implemented in LyX.cpp
119 void setSpellChecker();
123 #endif // SPELL_BASE_H