6 #ifndef _FCITX_LIBIME_PINYIN_PINYINCONTEXT_H_ 7 #define _FCITX_LIBIME_PINYIN_PINYINCONTEXT_H_ 13 #include <string_view> 14 #include <unordered_set> 17 #include <fcitx-utils/macros.h> 18 #include <libime/core/inputbuffer.h> 19 #include <libime/core/languagemodel.h> 20 #include <libime/core/lattice.h> 21 #include <libime/pinyin/libimepinyin_export.h> 22 #include "libime/core/historybigram.h" 26 class PinyinContextPrivate;
27 enum class PinyinPreeditMode;
34 void setUseShuangpin(
bool sp);
35 bool useShuangpin()
const;
37 void erase(
size_t from,
size_t to)
override;
38 void setCursor(
size_t pos)
override;
40 int maxSentenceLength()
const;
41 void setMaxSentenceLength(
int length);
43 const std::vector<SentenceResult> &candidates()
const;
51 const std::unordered_set<std::string> &candidateSet()
const;
53 const std::vector<SentenceResult> &candidatesToCursor()
const;
61 const std::unordered_set<std::string> &candidatesToCursorSet()
const;
62 void select(
size_t idx);
63 void selectCandidatesToCursor(
size_t idx);
65 bool cancelTill(
size_t pos);
77 void selectCustom(
size_t inputLength, std::string_view segment,
78 std::string_view encodedPinyin =
"");
81 bool selected()
const;
85 const auto &c = candidates();
87 return selectedSentence() + c[0].toString();
89 return selectedSentence();
92 std::string preedit(PinyinPreeditMode mode)
const;
95 std::pair<std::string, size_t>
96 preeditWithCursor(PinyinPreeditMode mode)
const;
98 std::string preedit()
const;
101 std::pair<std::string, size_t> preeditWithCursor()
const;
104 std::string selectedSentence()
const;
107 size_t selectedLength()
const;
110 std::vector<std::string> selectedWords()
const;
113 std::vector<HistoryBigram::WordWithCode> selectedWordsWithPinyin()
const;
116 std::string selectedFullPinyin()
const;
119 std::string candidateFullPinyin(
size_t i)
const;
122 std::string candidateFullPinyin(
const SentenceResult &candidate)
const;
129 int pinyinBeforeCursor()
const;
133 int pinyinAfterCursor()
const;
145 void setContextWords(
const std::vector<std::string> &contextWords);
151 void clearContextWords();
158 void appendContextWords(
const std::vector<std::string> &contextWords);
165 std::vector<std::string> contextWords()
const;
172 void setContextWordsWithPinyin(
173 const std::vector<HistoryBigram::WordWithCode> &contextWordsWithPinyin);
180 void appendContextWordsWithPinyin(
181 const std::vector<HistoryBigram::WordWithCode> &contextWordsWithPinyin);
188 std::vector<HistoryBigram::WordWithCode> contextWordsWithPinyin()
const;
191 bool typeImpl(
const char *s,
size_t length)
override;
196 std::unique_ptr<PinyinContextPrivate> d_ptr;
201 #endif // _FCITX_LIBIME_PINYIN_PINYINCONTEXT_H_ std::string sentence() const
The sentence for this context, can be used as preedit.
Provides shared data for PinyinContext.