1 /*
2  * SPDX-FileCopyrightText: 2017-2017 CSSlayer <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  */
6 #ifndef _FCITX_LIBIME_TABLE_TABLEOPTIONS_H_
7 #define _FCITX_LIBIME_TABLE_TABLEOPTIONS_H_
8 
9 #include "libimetable_export.h"
10 #include <cstdint>
11 #include <fcitx-utils/macros.h>
12 #include <memory>
13 #include <set>
14 #include <string>
15 #include <unordered_set>
16 
17 namespace libime {
18 
19 enum class OrderPolicy {
20     No,
21     Fast,
22     Freq,
23 };
24 
25 class TableOptionsPrivate;
26 
27 class LIBIMETABLE_EXPORT TableOptions {
28 public:
29     TableOptions();
30     FCITX_DECLARE_VIRTUAL_DTOR_COPY_AND_MOVE(TableOptions)
31 
32     FCITX_DECLARE_PROPERTY(OrderPolicy, orderPolicy, setOrderPolicy);
33     FCITX_DECLARE_PROPERTY(uint32_t, noSortInputLength, setNoSortInputLength);
34     FCITX_DECLARE_PROPERTY(bool, autoSelect, setAutoSelect);
35     FCITX_DECLARE_PROPERTY(int, autoSelectLength, setAutoSelectLength);
36     FCITX_DECLARE_PROPERTY(std::string, autoSelectRegex, setAutoSelectRegex);
37     FCITX_DECLARE_PROPERTY(int, noMatchAutoSelectLength,
38                            setNoMatchAutoSelectLength);
39     FCITX_DECLARE_PROPERTY(std::string, noMatchAutoSelectRegex,
40                            setNoMatchAutoSelectRegex);
41     FCITX_DECLARE_PROPERTY(bool, commitRawInput, setCommitRawInput);
42     FCITX_DECLARE_PROPERTY(std::set<uint32_t>, endKey, setEndKey);
43     FCITX_DECLARE_PROPERTY(uint32_t, matchingKey, setMatchingKey);
44     FCITX_DECLARE_PROPERTY(bool, exactMatch, setExactMatch);
45     FCITX_DECLARE_PROPERTY(bool, learning, setLearning);
46     FCITX_DECLARE_PROPERTY(int, autoPhraseLength, setAutoPhraseLength);
47     FCITX_DECLARE_PROPERTY(int, saveAutoPhraseAfter, setSaveAutoPhraseAfter);
48     FCITX_DECLARE_PROPERTY(std::unordered_set<std::string>, autoRuleSet,
49                            setAutoRuleSet);
50     FCITX_DECLARE_PROPERTY(std::string, languageCode, setLanguageCode);
51 
52 private:
53     std::unique_ptr<TableOptionsPrivate> d_ptr;
54     FCITX_DECLARE_PRIVATE(TableOptions);
55 };
56 } // namespace libime
57 
58 #endif // _FCITX_LIBIME_TABLE_TABLEOPTIONS_H_
59