Expand description
水杉输入法引擎的 C ABI:把核心层 msime_engine::Session 包成带版本的 C 函数,符号一律以 msime_engine_ 开头,头文件是 cbindgen 生成并提交的 include/msime_engine.h。
设计与取舍见 .agents/notes/implemented/architecture/2026-10-29-engine-capi.md,给 C 采用方的用法(生命周期、按键路由、线程、内存、要带的数据文件、许可证)见 crate 的 README。这里只包核心层,不包 host 门面,也不扩展 host-api。
Structs§
- msime_
engine_ candidate - 一行候选(ABI 1.0),
msime_engine_candidate_get填写,收发规则同msime_engine_result,字符串的有效期同msime_engine_state。 - msime_
engine_ paths - 运行时的四个根目录(ABI 1.0),都要是绝对路径,UTF-8。库只读 min(调用方大小, 库内大小) 个字节,读不到的字段按全零处理。
- msime_
engine_ result - 一次按键、命令或选择的结果(ABI 1.0)。调用前把
struct_size设为sizeof(msime_engine_result);库写入 min(调用方大小, 库内大小) 个字节,把struct_size改成写入的大小,多出的部分清零。commit和diagnostic借自会话,到同一会话下一次改变状态的调用为止有效。 - msime_
engine_ session - 不透明的会话句柄,由
msime_engine_session_new建、msime_engine_session_free释放。 - msime_
engine_ state - 组字状态(ABI 1.0),
msime_engine_state_get填写,收发规则同msime_engine_result。字符串借自会话按修订号缓存的快照,msime_engine_state_get、msime_engine_candidate_get这类只读调用不让它们失效。 - msime_
engine_ str - 库借给调用方的一段 UTF-8 文本:
len个字节,不以 NUL 结尾,按长度读。空串时ptr也不是 NULL。指向会话里缓存的数据,有效期见各个函数:热路径上的都到同一会话下一次改变状态的调用为止。
Constants§
- MSIME_
ENGINE_ ABI_ MAJOR - ABI 主版本。同一个主版本内只追加函数、常量和结构体尾部的字段,不改已有的含义;Linux 的 SONAME 带的就是它(
libmsime_engine.so.1)。 - MSIME_
ENGINE_ ABI_ MINOR - ABI 次版本,每次追加加一。调用方可以按
msime_engine_abi_version()判断运行时的库有没有某个后加的函数。 - MSIME_
ENGINE_ BUSY - 会话正被另一个线程调用(同一会话的调用不能并发),或者词库正被别的会话、别的进程占着(维护要等所有会话关掉)。什么也没做,稍后重试。
- MSIME_
ENGINE_ CANDIDATE_ ANSWERS_ KEY msime_engine_candidate::flags:这一行回答的是整段输入,不是它的前缀或更长的补全。- MSIME_
ENGINE_ CANDIDATE_ FUZZY msime_engine_candidate::flags:按模糊音读出的行。- MSIME_
ENGINE_ CANDIDATE_ SENTENCE msime_engine_candidate::flags:整句联想解出的整句。- MSIME_
ENGINE_ CARET_ END msime_engine_set_caret的caret_byte取这个值(或任何负数)时光标回到末尾。- MSIME_
ENGINE_ COMMAND_ BACKSPACE - MSIME_
ENGINE_ COMMAND_ CANCEL - 丢弃组字(Esc)。越南文和藏文的第一次只把显示切回按键原文,再发一次才丢弃;开着可打开的候选列表(韩文汉字)时第一次只关列表。
- MSIME_
ENGINE_ COMMAND_ COMMIT_ CANDIDATE - 上屏首选(引擎顺序的第 0 行)。宿主自己高亮了别的行时用
msime_engine_select。 - MSIME_
ENGINE_ COMMAND_ COMMIT_ RAW - 上屏按键原文(回车)。专用英文里打的词学进英文词库;选项
english.learn_typed_spellings_on_enter打开时,临时英文的字母和拼不成音节的拼音也学。 - MSIME_
ENGINE_ COMMAND_ COMMIT_ RAW_ WITHOUT_ LEARNING - ABI 1.1 起:与
COMMIT_RAW上屏同样的原文,但不学英文词(例如宿主的 Shift+回车)。1.0 的库对它返回MSIME_ENGINE_UNSUPPORTED。 - MSIME_
ENGINE_ COMMAND_ COMMIT_ READING - 只用于日文:上屏假名读音。
- MSIME_
ENGINE_ COMMAND_ CONVERSION_ LEFT - 整句改字的光标左移一个字;进不了改字时与
MOVE_LEFT相同。 - MSIME_
ENGINE_ COMMAND_ CONVERSION_ RIGHT - 整句改字的光标右移一个字;不在改字里时与
MOVE_RIGHT相同。 - MSIME_
ENGINE_ COMMAND_ CYCLE_ KANA_ VARIANT - 只用于日文:切换假名写法。
- MSIME_
ENGINE_ COMMAND_ DELETE_ FORWARD - MSIME_
ENGINE_ COMMAND_ MOVE_ END - MSIME_
ENGINE_ COMMAND_ MOVE_ HOME - MSIME_
ENGINE_ COMMAND_ MOVE_ LEFT - MSIME_
ENGINE_ COMMAND_ MOVE_ RIGHT - MSIME_
ENGINE_ COMMAND_ OPEN_ CANDIDATE_ LIST - 打开或关闭当前方案可打开的候选列表:韩文当前音节的汉字、注音整句的其他转换。
- MSIME_
ENGINE_ EDGE_ FIRST_ HAN msime_engine_select_edge的edge:上屏这一行的第一个汉字。- MSIME_
ENGINE_ EDGE_ LAST_ HAN msime_engine_select_edge的edge:上屏这一行的最后一个汉字。- MSIME_
ENGINE_ FAILED - 引擎没能完成操作(例如换到一个没有词库的方案)。
- MSIME_
ENGINE_ FLUSH_ STOP_ THREAD msime_engine_flush_learning的flags:写完之后停掉后台写线程并等它结束。卸载库或退出进程前用;之后会话照常可用,下一次学习重新起线程。- MSIME_
ENGINE_ FREQUENCY_ DISABLED - 不调频:选词不改变以后的排序(缺省)。
- MSIME_
ENGINE_ FREQUENCY_ HALVE - 选中的词挪到原位置的一半处:下标 n 挪到 n/2(下标从 0 数)。
- MSIME_
ENGINE_ FREQUENCY_ LINEAR - 选中的词前移
linear_step位。 - MSIME_
ENGINE_ FREQUENCY_ PIN - 选中的词直接排到首位。
- MSIME_
ENGINE_ FREQUENCY_ PROMOTE - 选中的词前移一位;下标大于 4 的直接挪到下标 4(第 5 位)。
- MSIME_
ENGINE_ INVALID_ ARGUMENT - 参数不合法:选项 JSON 有未知键或取值不对、索引越界、不是 UTF-8、
struct_size比 1.0 的布局还小等。 - MSIME_
ENGINE_ KEY_ SHIFT_ ONLY msime_engine_key_char的flags:这是单独按下的 Shift 加字母(大写字母开本地模式的入口)。- MSIME_
ENGINE_ LOCAL_ MODE_ CHAIZI - MSIME_
ENGINE_ LOCAL_ MODE_ COMMAND - MSIME_
ENGINE_ LOCAL_ MODE_ DATE_ TIME - MSIME_
ENGINE_ LOCAL_ MODE_ EMOJI - MSIME_
ENGINE_ LOCAL_ MODE_ EXPRESSION - MSIME_
ENGINE_ LOCAL_ MODE_ KAOMOJI - MSIME_
ENGINE_ LOCAL_ MODE_ MENTION - MSIME_
ENGINE_ LOCAL_ MODE_ NONE - MSIME_
ENGINE_ LOCAL_ MODE_ QUICK_ PHRASE - MSIME_
ENGINE_ LOCAL_ MODE_ SUPER_ JIANPIN - MSIME_
ENGINE_ LOCAL_ MODE_ SYMBOL - MSIME_
ENGINE_ LOCAL_ MODE_ TEMPORARY_ ENGLISH - MSIME_
ENGINE_ LOCAL_ MODE_ TEMPORARY_ JAPANESE - MSIME_
ENGINE_ LOCAL_ MODE_ UNICODE - MSIME_
ENGINE_ LOCAL_ MODE_ URL - MSIME_
ENGINE_ MODEL_ JAPANESE msime_engine_preload_model的kind:msime-japanese.dat。- MSIME_
ENGINE_ NULL - 必需的指针参数是 NULL。
- MSIME_
ENGINE_ OK - 成功。
- MSIME_
ENGINE_ OPTION_ CHINESE_ PUNCT - 整数:中文标点开关,0 或 1。
- MSIME_
ENGINE_ OPTION_ DEDICATED_ ENGLISH - 整数:专用英文模式,0 或 1;只在模式真的改变时丢弃组字。
- MSIME_
ENGINE_ OPTION_ FIRST_ PAGE_ ROWS - 整数:宿主每页的候选数(1 到 255);决定全长组的同音词够多少行就不再并入更长的补全词。
- MSIME_
ENGINE_ OPTION_ FREQUENCY_ LINEAR_ STEP - 整数,ABI 1.1 起:
MSIME_ENGINE_FREQUENCY_LINEAR每次前移几位(1 到 10),与选项frequency.linear_step相同。 - MSIME_
ENGINE_ OPTION_ FREQUENCY_ MODE - 整数,ABI 1.1 起:调频方式,
MSIME_ENGINE_FREQUENCY_*,与选项frequency.mode相同。从下一次选择起按新方式学,已经学下的排序照旧生效,眼前的候选不重排。 - MSIME_
ENGINE_ OPTION_ FREQUENCY_ TRIGGER_ COUNT - 整数,ABI 1.1 起:同一个词要被选中几次才挪位(1 到 10),与选项
frequency.trigger_count相同。 - MSIME_
ENGINE_ OPTION_ HELPCODE_ ENABLED - 整数:辅助码开关(全拼和双拼一起),0 或 1。
- MSIME_
ENGINE_ OPTION_ HELPCODE_ SCHEMA - 字符串:辅助码表名,例如
wubi86;读不到表时MSIME_ENGINE_FAILED。 - MSIME_
ENGINE_ OPTION_ PAIRED_ PUNCT - 整数:成对标点开关,0 或 1。
- MSIME_
ENGINE_ OPTION_ PERSONAL_ CONTEXT - 整数:个人上下文学习(词序与搭配),0 或 1;关掉时也结束当前上下文。
- MSIME_
ENGINE_ OPTION_ PREDICTION_ ALLOWED - 整数:宿主的即时隐私门禁,0 时清掉上屏后联想、之后不再给出,选项
next_word_prediction本身不变。 - MSIME_
ENGINE_ OPTION_ PUNCT_ LOCK - 整数:标点锁,0 跟随模式、1 强制中文、2 强制 ASCII。
- MSIME_
ENGINE_ OPTION_ RESCORING_ CONTEXT - 字符串:整句模型参照的已上屏文字(只看最后 64 个字),宿主在光标前文字变化时交来。
- MSIME_
ENGINE_ OPTION_ WUBI_ MIXED_ PINYIN - 整数,ABI 1.1 起:五笔拼音混输(码表没有时按全拼出字),0 或 1,与选项
wubi.mixed_pinyin相同;五笔组字中切换时立即按新设置重查候选。 - MSIME_
ENGINE_ PANIC - 之前的某次调用在库里 panic 了,会话已作废,只能
msime_engine_session_free。进程级函数 panic 时也返回它,但不作废任何东西。 - MSIME_
ENGINE_ SCHEME_ CANTONESE - MSIME_
ENGINE_ SCHEME_ JAPANESE - MSIME_
ENGINE_ SCHEME_ KOREAN - MSIME_
ENGINE_ SCHEME_ QUANPIN - MSIME_
ENGINE_ SCHEME_ SHUANGPIN - MSIME_
ENGINE_ SCHEME_ STROKE - MSIME_
ENGINE_ SCHEME_ TIBETAN - MSIME_
ENGINE_ SCHEME_ VIETNAMESE - MSIME_
ENGINE_ SCHEME_ WUBI - MSIME_
ENGINE_ SCHEME_ ZHUYIN - MSIME_
ENGINE_ SOURCE_ AI_ PENDING - MSIME_
ENGINE_ SOURCE_ AI_ SUGGESTION - MSIME_
ENGINE_ SOURCE_ CLOUD_ PENDING - MSIME_
ENGINE_ SOURCE_ CLOUD_ SUGGESTION - MSIME_
ENGINE_ SOURCE_ COLLOCATION - MSIME_
ENGINE_ SOURCE_ CONTACT - MSIME_
ENGINE_ SOURCE_ DATABASE - MSIME_
ENGINE_ SOURCE_ EMOJI - emoji 行,也用于打拼音出符号的符号行:选中时整段上屏,不学习。
- MSIME_
ENGINE_ SOURCE_ ENGLISH_ DICTIONARY - MSIME_
ENGINE_ SOURCE_ FALLBACK - 解码器给不出词时的原文或兜底行。
- MSIME_
ENGINE_ SOURCE_ GENERATED - 词格解出的整句。
- MSIME_
ENGINE_ SOURCE_ KAOMOJI - MSIME_
ENGINE_ SOURCE_ MIXED_ JAPANESE - MSIME_
ENGINE_ SOURCE_ MULTILINGUAL - MSIME_
ENGINE_ SOURCE_ NEURAL_ KEYBOARD - MSIME_
ENGINE_ SOURCE_ PLUGIN - MSIME_
ENGINE_ SOURCE_ QUICK_ PHRASE - MSIME_
ENGINE_ SOURCE_ USER_ DATABASE - MSIME_
ENGINE_ STALE - 传入的
revision不是会话当前的候选修订号:候选已经变了,先重新msime_engine_state_get。 - MSIME_
ENGINE_ STATE_ CANDIDATE_ LIST_ OPEN msime_engine_state::flags:方案可打开的候选列表(韩文汉字)正开着。- MSIME_
ENGINE_ STATE_ DEDICATED_ ENGLISH msime_engine_state::flags:专用英文模式开着。- MSIME_
ENGINE_ STATE_ PREDICTION msime_engine_state::flags:候选是上屏后的联想,只接受显式选择,空格、回车不上屏它们。- MSIME_
ENGINE_ STATE_ TAKES_ SEPARATOR msime_engine_state::flags:此刻的'是分隔符(单位与目标之间、/fy的词之间),要按字符交给msime_engine_key_char,不能当标点结束组字。- MSIME_
ENGINE_ STORAGE - SQLite 或文件系统出错。
- MSIME_
ENGINE_ UNSUPPORTED - 这个库不认识的选项编号、模型种类或标志位。
- MSIME_
ENGINE_ USER_ DICT_ INCLUDE_ LEARNED msime_engine_user_dict_list的flags:同时列出随包多字词被学习或编辑过的拼音权重。
Functions§
- msime_
engine_ abi_ version - 运行时这份库的 ABI 版本:
(major << 16) | minor。主版本与编译时的MSIME_ENGINE_ABI_MAJOR不同就不要用它;次版本比编译时小时,后加的函数不可用。 - msime_
engine_ ⚠candidate_ get - 读第
index行候选。revision必须是当前的候选修订号,否则MSIME_ENGINE_STALE;越界是MSIME_ENGINE_INVALID_ARGUMENT。只读,可以先取状态再逐个取一页候选。 - msime_
engine_ ⚠candidate_ key - ABI 1.1 起。数字键当选择键,引擎自己的数字选词入口:有组字时
1–9上屏整张候选表的第digit - 1行(也就是第一页,msime_engine_select的那套学习照常);越南文 VNI 和注音此刻拼写用的数字交给拼写;没有组字时不处理(handled为 0),并且忘掉上屏的上下文,因为这个数字由宿主自己交给应用;上屏后联想的候选不接数字,按下时被清掉。digit只收 ASCII 数字0–9,其余是MSIME_ENGINE_INVALID_ARGUMENT。不带修订号:它选的是调用时的候选。Unicode、日期、计算这些用数字拼写的本地模式里它照样选词,所以按键路由仍是先msime_engine_key_char,没被处理时再用它(只显示第一页的前端)或msime_engine_select(翻过页的前端),见 README 按键路由第 4 条。 - msime_
engine_ ⚠clear_ position - 取消第
index行的固定位置。 - msime_
engine_ close_ databases - 关掉所有线程上缓存着的空闲数据库连接。删除或替换数据目录之前调;正被某次调用用着的连接在那次调用结束时关。
- msime_
engine_ ⚠command - 一个编辑命令(
MSIME_ENGINE_COMMAND_*)。 - msime_
engine_ ⚠expand_ candidates - 单字母全拼只先给出一部分候选;宿主翻过第一页时调它要回其余的。
*grew写 1 表示列表变长了(修订号随之改变),否则写 0。会改变状态。 - msime_
engine_ ⚠finish - 结束组字:从第
first_index行(宿主高亮的那一行)起上屏,用于失焦、标点前或宿主自己的结束键。 - msime_
engine_ ⚠fix_ position - 把第
index行固定在第position位(1..=5)。 - msime_
engine_ flush_ learning - 立刻写下所有排着的个人上下文学习(平时延迟约 2 秒写)。
flags带MSIME_ENGINE_FLUSH_STOP_THREAD时再停掉后台写线程并等它结束:卸载库、退出进程前用。 - msime_
engine_ ⚠key_ char - 一个 ASCII 字符(0x20 到 0x7E,另收 Tab 0x09):字母、拼写用的数字,以及
spelling_symbols里列出的符号。flags是MSIME_ENGINE_KEY_*。结果写进result(可以是 NULL)。按键路由见 README。 - msime_
engine_ ⚠key_ punct - 一个 ASCII 标点:有组字时以首选结束组字,再接上中文标点;中文标点关着、锁成 ASCII 或这个键没有中文标点时不处理(
handled为 0),宿主自己输出这个键。宿主高亮了首选以外的行时,先用msime_engine_finish以那一行结束,再调这个函数。 - msime_
engine_ last_ error - 本线程上一次调用失败的说明(英文,NUL 结尾),没有失败时是空串。有效到本线程下一次调用这个库为止(调它自己除外),不要释放。
- msime_
engine_ ⚠pin - 把第
index行(词库里的词)提到前面,不上屏。不支持的行不处理(handled为 0)。 - msime_
engine_ ⚠preload_ model - 把模型的字节直接交给引擎,给没有文件系统或想自己读文件的宿主。
kind是MSIME_ENGINE_MODEL_*,path是会话读这个模型的位置(日文是resources/msime-japanese.dat或选项language_dictionaries.japanese)。bytes为 NULL 且bytes_len为 0 时撤掉之前交的那份。字节不是合法模型时MSIME_ENGINE_INVALID_ARGUMENT,什么也不改。库复制一份,调用返回后bytes可以释放。 - msime_
engine_ ⚠prepare_ runtime - 准备运行时:在
user_data/dictionaries/<content_id>原子地准备一个代次(从resources复制工作词库并回放学习日志),已就绪的代次只补回放。content_id是 1 到 128 个[0-9A-Za-z_-],随包数据变了就换一个;带点的版本号要先换掉点(dict-v2_0_39)。三个根目录必须是绝对路径、互不重叠。paths.dictionaries不读。按全部方案准备:resources里必须有msime-pinyin.db和msime-english.db;只用其中几个方案时用msime_engine_prepare_runtime_for,只带那几个方案的数据。成功时把代次目录写进*dictionaries(可以是 NULL),用msime_engine_string_free释放;建会话时它就是paths.dictionaries。 - msime_
engine_ ⚠prepare_ runtime_ for - ABI 1.1 起。同
msime_engine_prepare_runtime,只为schemes里的方案准备:resources只要有这些方案读的词库。schemes的第 n 位是序号为 n 的方案(1u << MSIME_ENGINE_SCHEME_KOREAN),要与会话选项的enabled_schemes相同,不能是 0,不认识的位是MSIME_ENGINE_INVALID_ARGUMENT。有全拼、双拼或五笔时与msime_engine_prepare_runtime相同,要msime-pinyin.db和msime-english.db;没有时两者都不要求,resources带了msime-english.db就照样复制进代次(专用英文的补全与回车学词用它),没带时代次里没有它。日文的msime-japanese.dat和粤语、注音、笔画的语言库不经过代次,会话从resources或选项给的路径直接读。 - msime_
engine_ release_ caches - 内存告警时调:放掉进程级缓存里没有会话在用的日文模型和个人学习模型。正在用的会话不受影响。
- msime_
engine_ ⚠remove - 删掉第
index行:用户自己的词从个人词典删除,随包的词不再出现。 - msime_
engine_ ⚠reset_ context - 忘掉上屏的上下文(焦点或应用变了、宿主自己插入了文字),清掉上屏后联想。
- msime_
engine_ ⚠reset_ learning - 清空学到的一切:换回随包的工作词库、清空学习日志。和
msime_engine_prepare_runtime一样要求resources里有msime-pinyin.db和msime-english.db;代次是用msime_engine_prepare_runtime_for准备的,就用msime_engine_reset_learning_for传同一个方案集合。还有会话开着时返回MSIME_ENGINE_BUSY,什么也不换。 - msime_
engine_ ⚠reset_ learning_ for - ABI 1.1 起。同
msime_engine_reset_learning,只换回schemes读的词库,规则与msime_engine_prepare_runtime_for相同:没有全拼、双拼、五笔时不要求msime-pinyin.db,msime-english.db在resources里有才换回,都没有时只清空日志。schemes的写法同msime_engine_prepare_runtime_for。 - msime_
engine_ ⚠select - 选第
index行上屏(或消耗它覆盖的那段编码,剩下的接着组字),并照常学习。 - msime_
engine_ ⚠select_ edge - 以词定字:上屏第
index行的第一个或最后一个汉字(MSIME_ENGINE_EDGE_*),丢掉其余组字。 - msime_
engine_ ⚠session_ free - 结束并释放会话:写下最近的学习,交还日志连接和词库租约。NULL 什么也不做。另一个线程正在调这个会话时返回
MSIME_ENGINE_BUSY、不释放;已作废的会话照样可以释放。释放之后句柄不能再用。 - msime_
engine_ ⚠session_ new - 按选项 JSON(版本 1,键表见 README)建一个会话,成功时把句柄写进
*session,失败时写 NULL。会话持有这两个目录上的共享词库租约,直到释放:租约在维护(msime_engine_user_dict_edit、msime_engine_reset_learning)进行时拿不到,这时返回MSIME_ENGINE_BUSY。 - msime_
engine_ ⚠set_ caret - 把组字光标放到
editing_text的第caret_byte个字节前;负数(MSIME_ENGINE_CARET_END)回到末尾。位置限制在可编辑的范围内,九键组码时什么也不做。 - msime_
engine_ ⚠set_ int - 设一个整数选项(
MSIME_ENGINE_OPTION_*里标着「整数」的)。不认识的编号是MSIME_ENGINE_UNSUPPORTED,字符串选项或越界的值是MSIME_ENGINE_INVALID_ARGUMENT。 - msime_
engine_ ⚠set_ log_ callback - ABI 1.1 起。把引擎的警告日志交给
callback,callback为 NULL 时回到缺省:写到标准错误,每行前缀msime:。日志是进程级的:所有会话和库的后台线程记的都交给它,再注册一次就换掉上一个。 - msime_
engine_ ⚠set_ string - 设一个字符串选项(
MSIME_ENGINE_OPTION_*里标着「字符串」的),value是value_len个字节的 UTF-8。不认识的编号是MSIME_ENGINE_UNSUPPORTED,整数选项是MSIME_ENGINE_INVALID_ARGUMENT。 - msime_
engine_ ⚠state_ get - 读组字状态。只读:不改变会话,之前借出的字符串照样有效。
- msime_
engine_ ⚠state_ json - 整个状态和全部候选的 JSON,给调试和日志用;格式不属于 ABI,随版本变化。返回的字符串用
msime_engine_string_free释放。只读。 - msime_
engine_ ⚠string_ free - 释放库交出的字符串(选项以外的 JSON、路径)。NULL 什么也不做。不要用
free(),库和调用方可能用不同的分配器。 - msime_
engine_ ⚠switch_ scheme - 换方案(
MSIME_ENGINE_SCHEME_*),丢弃组字。方案必须在选项的enabled_schemes里;新方案的词库打不开时失败,留在原方案、组字不动。 - msime_
engine_ ⚠user_ dict_ edit - 改个人词典:
{"previous": 条目或 null, "replacement": 条目或 null, "request_id": "..."},previous 为 null 是新增,replacement 为 null 是删除,都有是替换(previous 必须与列表里的那条完全相同)。request_id(1 到 128 个[A-Za-z0-9_-],可以省略)让同一次编辑重试时不重复生效。还有会话开着(本进程或别的进程,包括 msime 自己的输入法)时返回MSIME_ENGINE_BUSY,什么也不写:先释放这些路径上的会话。 - msime_
engine_ ⚠user_ dict_ list - 列出个人词典(用户自己加的词,含自动造的词),按种类、编码、词排序,从第
offset条起最多limit条(limit为 0 时取 100)。flags是MSIME_ENGINE_USER_DICT_*。结果是 JSON:{"entries":[{"kind":"pinyin","key":"ni'hao","value":"你好","weight":100000}],"has_more":false},用msime_engine_string_free释放。 - msime_
engine_ ⚠user_ dict_ validate - ABI 1.1 起。按
msime_engine_user_dict_edit收新词条(replacement)的同一套规则检查一条词条,不碰任何文件,也不需要路径:输入是一条{"kind": "pinyin", "key": "NI HAO", "value": "你好", "weight": 100000}(weight可以省略),合法时把规范化后的词条写进*normalized_json(编码换成小写,拼音编码里的空格换成':NI HAO成为ni'hao),用msime_engine_string_free释放。词条不合法时返回MSIME_ENGINE_INVALID_ARGUMENT,msime_engine_last_error是引擎给的英文原因(例如Use complete pinyin syllables separated by apostrophes or spaces),可以直接显示给用户;*normalized_json不写。给前端在用户填编辑框时就提示,不必等到真的写入。 - msime_
engine_ version - 库的发布版本,静态的 NUL 结尾字符串,不要释放。
Type Aliases§
- msime_
engine_ log_ callback - 日志回调,ABI 1.1 起。
message是一行 UTF-8 的警告(不带msime:前缀和换行),NUL 结尾,message_len是不含 NUL 的字节数;只在这次调用期间有效。user_data是注册时交来的那个指针,库不碰它。