CFSWString shift_pattern(CFSWString s) { if (s == L'j') return L'j'; else if (s == L'h') return L'h'; else if (s == L'v') return L'v'; else if (s.FindOneOf(L"sS") > -1) return L's'; else if (s.FindOneOf(L"lmnrLN") > -1) return L'L'; else if (s.FindOneOf(L"kptfšT") > -1) return L'Q'; else if (is_vowel(s)) return L'V'; else if (is_consonant(s)) return L'C'; return s; }
CFSWString simplify_pattern(CFSWString s) { CFSWString res; for (INTPTR i = 0; i < (s.GetLength()); i++) { CFSWString c = s.GetAt(i); if (c.FindOneOf(L"jhvsLQ") > -1) res += L"C"; else res += c; } return res; }
bool can_palat(CFSWString c) { if (c.FindOneOf(L"DLNST") > -1) return true; return false; }
bool can_palat(CFSWString c) { if (c.FindOneOf(L"BDFGHKLMNPRSTV") > -1) return true; return false; }
bool can_palat_vr(CFSWString c) { if (c.FindOneOf(L"bdfghklmnprstv") > -1) return true; return false; }
bool must (CFSWString c) { if (c.FindOneOf(L"eijäöü") > -1) return true; return false; }