83 enum Forceucase :
bool {
84 FORBID_BAD_FORCEUCASE =
false,
85 ALLOW_BAD_FORCEUCASE =
true
88 enum Hidden_Homonym :
bool {
89 ACCEPT_HIDDEN_HOMONYM =
false,
90 SKIP_HIDDEN_HOMONYM =
true
93 auto spell_priv(std::string& s)
const -> bool;
94 auto spell_break(std::string& s,
size_t depth = 0)
const -> bool;
95 auto spell_casing(std::string& s)
const ->
const Flag_Set*;
96 auto spell_casing_upper(std::string& s)
const ->
const Flag_Set*;
97 auto spell_casing_title(std::string& s)
const ->
const Flag_Set*;
98 auto spell_sharps(std::string& base,
size_t n_pos = 0,
size_t n = 0,
99 size_t rep = 0)
const ->
const Flag_Set*;
101 auto check_word(std::string& s, Forceucase allow_bad_forceucase = {},
102 Hidden_Homonym skip_hidden_homonym = {})
const
104 auto check_simple_word(std::string& word,
105 Hidden_Homonym skip_hidden_homonym = {})
const
108 template <Affixing_Mode m>
109 auto affix_NOT_valid(
const Prefix& a)
const;
110 template <Affixing_Mode m>
111 auto affix_NOT_valid(
const Suffix& a)
const;
112 template <Affixing_Mode m,
class AffixT>
113 auto outer_affix_NOT_valid(
const AffixT& a)
const;
114 template <
class AffixT>
115 auto is_circumfix(
const AffixT& a)
const;
116 template <Affixing_Mode m>
117 auto is_valid_inside_compound(
const Flag_Set& flags)
const;
119 template <Affixing_Mode m = FULL_WORD>
120 auto strip_prefix_only(std::string& s,
121 Hidden_Homonym skip_hidden_homonym = {})
const
124 template <Affixing_Mode m = FULL_WORD>
125 auto strip_suffix_only(std::string& s,
126 Hidden_Homonym skip_hidden_homonym = {})
const
129 template <Affixing_Mode m = FULL_WORD>
131 strip_prefix_then_suffix(std::string& s,
132 Hidden_Homonym skip_hidden_homonym = {})
const
135 template <Affixing_Mode m>
136 auto strip_pfx_then_sfx_2(
const Prefix& pe, std::string& s,
137 Hidden_Homonym skip_hidden_homonym)
const
140 template <Affixing_Mode m = FULL_WORD>
142 strip_suffix_then_prefix(std::string& s,
143 Hidden_Homonym skip_hidden_homonym = {})
const
146 template <Affixing_Mode m>
147 auto strip_sfx_then_pfx_2(
const Suffix& se, std::string& s,
148 Hidden_Homonym skip_hidden_homonym)
const
151 template <Affixing_Mode m = FULL_WORD>
152 auto strip_prefix_then_suffix_commutative(
153 std::string& word, Hidden_Homonym skip_hidden_homonym = {})
const
156 template <Affixing_Mode m = FULL_WORD>
157 auto strip_pfx_then_sfx_comm_2(
const Prefix& pe, std::string& word,
158 Hidden_Homonym skip_hidden_homonym)
const
161 template <Affixing_Mode m = FULL_WORD>
163 strip_suffix_then_suffix(std::string& s,
164 Hidden_Homonym skip_hidden_homonym = {})
const
167 template <Affixing_Mode m>
168 auto strip_sfx_then_sfx_2(
const Suffix& se1, std::string& s,
169 Hidden_Homonym skip_hidden_homonym)
const
172 template <Affixing_Mode m = FULL_WORD>
174 strip_prefix_then_prefix(std::string& s,
175 Hidden_Homonym skip_hidden_homonym = {})
const
178 template <Affixing_Mode m>
179 auto strip_pfx_then_pfx_2(
const Prefix& pe1, std::string& s,
180 Hidden_Homonym skip_hidden_homonym)
const
183 template <Affixing_Mode m = FULL_WORD>
184 auto strip_prefix_then_2_suffixes(
185 std::string& s, Hidden_Homonym skip_hidden_homonym = {})
const
188 template <Affixing_Mode m>
189 auto strip_pfx_2_sfx_3(
const Prefix& pe1,
const Suffix& se1,
191 Hidden_Homonym skip_hidden_homonym)
const
194 template <Affixing_Mode m = FULL_WORD>
195 auto strip_suffix_prefix_suffix(
196 std::string& s, Hidden_Homonym skip_hidden_homonym = {})
const
199 template <Affixing_Mode m>
200 auto strip_s_p_s_3(
const Suffix& se1,
const Prefix& pe1,
202 Hidden_Homonym skip_hidden_homonym)
const
205 template <Affixing_Mode m = FULL_WORD>
206 auto strip_2_suffixes_then_prefix(
207 std::string& s, Hidden_Homonym skip_hidden_homonym = {})
const
210 template <Affixing_Mode m>
211 auto strip_2_sfx_pfx_3(
const Suffix& se1,
const Suffix& se2,
213 Hidden_Homonym skip_hidden_homonym)
const
216 template <Affixing_Mode m = FULL_WORD>
217 auto strip_suffix_then_2_prefixes(
218 std::string& s, Hidden_Homonym skip_hidden_homonym = {})
const
221 template <Affixing_Mode m>
222 auto strip_sfx_2_pfx_3(
const Suffix& se1,
const Prefix& pe1,
224 Hidden_Homonym skip_hidden_homonym)
const
227 template <Affixing_Mode m = FULL_WORD>
228 auto strip_prefix_suffix_prefix(
229 std::string& word, Hidden_Homonym skip_hidden_homonym = {})
const
232 template <Affixing_Mode m>
233 auto strip_p_s_p_3(
const Prefix& pe1,
const Suffix& se1,
235 Hidden_Homonym skip_hidden_homonym)
const
238 template <Affixing_Mode m = FULL_WORD>
239 auto strip_2_prefixes_then_suffix(
240 std::string& word, Hidden_Homonym skip_hidden_homonym = {})
const
243 template <Affixing_Mode m>
244 auto strip_2_pfx_sfx_3(
const Prefix& pe1,
const Prefix& pe2,
246 Hidden_Homonym skip_hidden_homonym)
const
249 auto check_compound(std::string& word,
250 Forceucase allow_bad_forceucase)
const
253 template <Affixing_Mode m = AT_COMPOUND_BEGIN>
254 auto check_compound(std::string& word,
size_t start_pos,
255 size_t num_part, std::string& part,
256 Forceucase allow_bad_forceucase)
const
259 template <Affixing_Mode m = AT_COMPOUND_BEGIN>
260 auto check_compound_classic(std::string& word,
size_t start_pos,
261 size_t i,
size_t num_part,
263 Forceucase allow_bad_forceucase)
const
266 template <Affixing_Mode m = AT_COMPOUND_BEGIN>
267 auto check_compound_with_pattern_replacements(
268 std::string& word,
size_t start_pos,
size_t i,
size_t num_part,
269 std::string& part, Forceucase allow_bad_forceucase)
const
272 template <Affixing_Mode m>
275 auto calc_num_words_modifier(
const Prefix& pfx)
const ->
unsigned char;
277 template <Affixing_Mode m>
278 auto calc_syllable_modifier(Word_List::const_reference we)
const
281 template <Affixing_Mode m>
282 auto calc_syllable_modifier(Word_List::const_reference we,
283 const Suffix& sfx)
const ->
signed char;
285 auto count_syllables(std::string_view word)
const -> size_t;
287 auto check_compound_with_rules(std::string& word,
288 std::vector<const Flag_Set*>& words_data,
289 size_t start_pos, std::string& part,
290 Forceucase allow_bad_forceucase)
const
293 auto is_rep_similar(std::string& word)
const -> bool;