7 #ifndef _FCITX_LIBIME_TABLE_TABLERULE_H_ 8 #define _FCITX_LIBIME_TABLE_TABLERULE_H_ 15 #include <fcitx-utils/macros.h> 16 #include <libime/table/libimetable_export.h> 19 enum class TableRuleEntryFlag : std::uint32_t { FromFront, FromBack };
21 enum class TableRuleFlag : std::uint32_t { LengthLongerThan, LengthEqual };
25 TableRuleEntry(TableRuleEntryFlag flag = TableRuleEntryFlag::FromFront,
26 uint8_t character = 0, uint8_t encodingIndex = 0);
32 bool isPlaceHolder()
const;
34 TableRuleEntryFlag flag()
const {
return flag_; }
35 uint8_t character()
const {
return character_; }
37 uint8_t encodingIndex()
const {
return encodingIndex_; }
41 TableRuleEntryFlag flag_;
43 uint8_t encodingIndex_;
48 TableRule(
const std::string &ruleString,
unsigned int maxLength);
50 TableRule(TableRuleFlag _flag = TableRuleFlag::LengthEqual,
51 int _phraseLength = 0, std::vector<TableRuleEntry> _entries = {});
55 FCITX_INLINE_DEFINE_DEFAULT_DTOR_COPY_AND_MOVE(TableRule)
57 std::string name()
const;
59 std::string toString()
const;
61 TableRuleFlag flag()
const {
return flag_; }
62 uint8_t phraseLength()
const {
return phraseLength_; }
63 const std::vector<TableRuleEntry> &entries()
const {
return entries_; }
64 size_t codeLength()
const;
67 TableRuleFlag flag_ = TableRuleFlag::LengthLongerThan;
68 uint8_t phraseLength_ = 0;
69 std::vector<TableRuleEntry> entries_;
72 LIBIMETABLE_EXPORT std::ostream &operator<<(std::ostream &out,
75 LIBIMETABLE_EXPORT std::ostream &operator<<(std::ostream &out,
80 #endif // _FCITX_LIBIME_TABLE_TABLERULE_H_