1#![allow(unsafe_code)]
9#![allow(non_camel_case_types)]
11
12mod abi;
13mod library;
14mod options;
15mod session;
16#[cfg(test)]
17mod tests;
18
19pub use abi::{
20 msime_engine_candidate, msime_engine_paths, msime_engine_result, msime_engine_state,
21 msime_engine_str,
22};
23pub use library::*;
24pub use session::*;
25
26pub const MSIME_ENGINE_ABI_MAJOR: u32 = 1;
30pub const MSIME_ENGINE_ABI_MINOR: u32 = 1;
32
33pub const MSIME_ENGINE_OK: i32 = 0;
39pub const MSIME_ENGINE_INVALID_ARGUMENT: i32 = 1;
41pub const MSIME_ENGINE_FAILED: i32 = 2;
43pub const MSIME_ENGINE_STORAGE: i32 = 3;
45pub const MSIME_ENGINE_UNSUPPORTED: i32 = 4;
47pub const MSIME_ENGINE_STALE: i32 = 5;
49pub const MSIME_ENGINE_BUSY: i32 = 6;
51pub const MSIME_ENGINE_PANIC: i32 = 7;
53pub const MSIME_ENGINE_NULL: i32 = 8;
55
56const _: () = {
57 use msime_engine::ErrorCode;
58 assert!(ErrorCode::InvalidArgument.value() == MSIME_ENGINE_INVALID_ARGUMENT as u32);
59 assert!(ErrorCode::Failed.value() == MSIME_ENGINE_FAILED as u32);
60 assert!(ErrorCode::Storage.value() == MSIME_ENGINE_STORAGE as u32);
61 assert!(ErrorCode::Busy.value() == MSIME_ENGINE_BUSY as u32);
62};
63
64pub const MSIME_ENGINE_SCHEME_QUANPIN: u32 = 0;
67pub const MSIME_ENGINE_SCHEME_SHUANGPIN: u32 = 1;
68pub const MSIME_ENGINE_SCHEME_WUBI: u32 = 2;
69pub const MSIME_ENGINE_SCHEME_JAPANESE: u32 = 3;
70pub const MSIME_ENGINE_SCHEME_KOREAN: u32 = 4;
71pub const MSIME_ENGINE_SCHEME_CANTONESE: u32 = 5;
72pub const MSIME_ENGINE_SCHEME_ZHUYIN: u32 = 6;
73pub const MSIME_ENGINE_SCHEME_VIETNAMESE: u32 = 7;
74pub const MSIME_ENGINE_SCHEME_TIBETAN: u32 = 8;
75pub const MSIME_ENGINE_SCHEME_STROKE: u32 = 9;
76
77pub const MSIME_ENGINE_COMMAND_BACKSPACE: u32 = 0;
80pub const MSIME_ENGINE_COMMAND_COMMIT_CANDIDATE: u32 = 1;
82pub const MSIME_ENGINE_COMMAND_COMMIT_RAW: u32 = 2;
84pub const MSIME_ENGINE_COMMAND_CANCEL: u32 = 3;
86pub const MSIME_ENGINE_COMMAND_MOVE_LEFT: u32 = 4;
87pub const MSIME_ENGINE_COMMAND_MOVE_RIGHT: u32 = 5;
88pub const MSIME_ENGINE_COMMAND_MOVE_HOME: u32 = 6;
89pub const MSIME_ENGINE_COMMAND_MOVE_END: u32 = 7;
90pub const MSIME_ENGINE_COMMAND_DELETE_FORWARD: u32 = 8;
91pub const MSIME_ENGINE_COMMAND_CYCLE_KANA_VARIANT: u32 = 9;
93pub const MSIME_ENGINE_COMMAND_COMMIT_READING: u32 = 10;
95pub const MSIME_ENGINE_COMMAND_OPEN_CANDIDATE_LIST: u32 = 11;
97pub const MSIME_ENGINE_COMMAND_CONVERSION_LEFT: u32 = 12;
99pub const MSIME_ENGINE_COMMAND_CONVERSION_RIGHT: u32 = 13;
101pub const MSIME_ENGINE_COMMAND_COMMIT_RAW_WITHOUT_LEARNING: u32 = 14;
103
104pub const MSIME_ENGINE_SOURCE_DATABASE: u32 = 0;
109pub const MSIME_ENGINE_SOURCE_USER_DATABASE: u32 = 1;
110pub const MSIME_ENGINE_SOURCE_CLOUD_SUGGESTION: u32 = 2;
111pub const MSIME_ENGINE_SOURCE_AI_SUGGESTION: u32 = 3;
112pub const MSIME_ENGINE_SOURCE_ENGLISH_DICTIONARY: u32 = 4;
113pub const MSIME_ENGINE_SOURCE_QUICK_PHRASE: u32 = 5;
114pub const MSIME_ENGINE_SOURCE_EMOJI: u32 = 6;
116pub const MSIME_ENGINE_SOURCE_KAOMOJI: u32 = 7;
117pub const MSIME_ENGINE_SOURCE_GENERATED: u32 = 8;
119pub const MSIME_ENGINE_SOURCE_FALLBACK: u32 = 9;
121pub const MSIME_ENGINE_SOURCE_NEURAL_KEYBOARD: u32 = 11;
122pub const MSIME_ENGINE_SOURCE_AI_PENDING: u32 = 12;
123pub const MSIME_ENGINE_SOURCE_MIXED_JAPANESE: u32 = 13;
124pub const MSIME_ENGINE_SOURCE_PLUGIN: u32 = 14;
125pub const MSIME_ENGINE_SOURCE_CLOUD_PENDING: u32 = 15;
126pub const MSIME_ENGINE_SOURCE_CONTACT: u32 = 16;
127pub const MSIME_ENGINE_SOURCE_COLLOCATION: u32 = 17;
128pub const MSIME_ENGINE_SOURCE_MULTILINGUAL: u32 = 18;
129
130pub const MSIME_ENGINE_LOCAL_MODE_NONE: u32 = 0;
133pub const MSIME_ENGINE_LOCAL_MODE_UNICODE: u32 = 1;
134pub const MSIME_ENGINE_LOCAL_MODE_DATE_TIME: u32 = 2;
135pub const MSIME_ENGINE_LOCAL_MODE_QUICK_PHRASE: u32 = 3;
136pub const MSIME_ENGINE_LOCAL_MODE_EMOJI: u32 = 4;
137pub const MSIME_ENGINE_LOCAL_MODE_KAOMOJI: u32 = 5;
138pub const MSIME_ENGINE_LOCAL_MODE_SUPER_JIANPIN: u32 = 6;
139pub const MSIME_ENGINE_LOCAL_MODE_TEMPORARY_ENGLISH: u32 = 7;
140pub const MSIME_ENGINE_LOCAL_MODE_TEMPORARY_JAPANESE: u32 = 8;
141pub const MSIME_ENGINE_LOCAL_MODE_EXPRESSION: u32 = 9;
142pub const MSIME_ENGINE_LOCAL_MODE_COMMAND: u32 = 10;
143pub const MSIME_ENGINE_LOCAL_MODE_MENTION: u32 = 11;
144pub const MSIME_ENGINE_LOCAL_MODE_URL: u32 = 12;
145pub const MSIME_ENGINE_LOCAL_MODE_CHAIZI: u32 = 13;
146pub const MSIME_ENGINE_LOCAL_MODE_SYMBOL: u32 = 14;
147
148pub const MSIME_ENGINE_KEY_SHIFT_ONLY: u32 = 1 << 0;
152
153pub const MSIME_ENGINE_STATE_PREDICTION: u32 = 1 << 0;
155pub const MSIME_ENGINE_STATE_DEDICATED_ENGLISH: u32 = 1 << 1;
157pub const MSIME_ENGINE_STATE_CANDIDATE_LIST_OPEN: u32 = 1 << 2;
159pub const MSIME_ENGINE_STATE_TAKES_SEPARATOR: u32 = 1 << 3;
161
162pub const MSIME_ENGINE_CANDIDATE_FUZZY: u32 = 1 << 0;
164pub const MSIME_ENGINE_CANDIDATE_ANSWERS_KEY: u32 = 1 << 1;
166pub const MSIME_ENGINE_CANDIDATE_SENTENCE: u32 = 1 << 2;
168
169pub const MSIME_ENGINE_EDGE_FIRST_HAN: u32 = 0;
171pub const MSIME_ENGINE_EDGE_LAST_HAN: u32 = 1;
173
174pub const MSIME_ENGINE_FLUSH_STOP_THREAD: u32 = 1 << 0;
176
177pub const MSIME_ENGINE_USER_DICT_INCLUDE_LEARNED: u32 = 1 << 0;
179
180pub const MSIME_ENGINE_MODEL_JAPANESE: u32 = 1;
182
183pub const MSIME_ENGINE_CARET_END: i64 = -1;
185
186pub const MSIME_ENGINE_OPTION_CHINESE_PUNCT: u32 = 1;
190pub const MSIME_ENGINE_OPTION_PAIRED_PUNCT: u32 = 2;
192pub const MSIME_ENGINE_OPTION_PUNCT_LOCK: u32 = 3;
194pub const MSIME_ENGINE_OPTION_DEDICATED_ENGLISH: u32 = 4;
196pub const MSIME_ENGINE_OPTION_HELPCODE_ENABLED: u32 = 5;
198pub const MSIME_ENGINE_OPTION_HELPCODE_SCHEMA: u32 = 6;
200pub const MSIME_ENGINE_OPTION_PERSONAL_CONTEXT: u32 = 7;
202pub const MSIME_ENGINE_OPTION_PREDICTION_ALLOWED: u32 = 8;
204pub const MSIME_ENGINE_OPTION_FIRST_PAGE_ROWS: u32 = 9;
206pub const MSIME_ENGINE_OPTION_RESCORING_CONTEXT: u32 = 10;
208pub const MSIME_ENGINE_OPTION_FREQUENCY_MODE: u32 = 11;
210pub const MSIME_ENGINE_OPTION_FREQUENCY_TRIGGER_COUNT: u32 = 12;
212pub const MSIME_ENGINE_OPTION_FREQUENCY_LINEAR_STEP: u32 = 13;
214pub const MSIME_ENGINE_OPTION_WUBI_MIXED_PINYIN: u32 = 14;
216
217pub const MSIME_ENGINE_FREQUENCY_DISABLED: u32 = 0;
221pub const MSIME_ENGINE_FREQUENCY_PIN: u32 = 1;
223pub const MSIME_ENGINE_FREQUENCY_HALVE: u32 = 2;
225pub const MSIME_ENGINE_FREQUENCY_LINEAR: u32 = 3;
227pub const MSIME_ENGINE_FREQUENCY_PROMOTE: u32 = 4;