librime 1.0 API 草案

143 views
Skip to first unread message

佛振

unread,
May 30, 2013, 10:03:36 AM5/30/13
to rime-...@googlegroups.com
久違了朋友們,

討論個編程上的問題吧。

因爲擔心 API 的擴展性不足以支持未來的擴充,我決心對 Rime 的 C API 改造一番。
重點解決版本兼容和數據結構擴展的問題。

思路來自先前寫的這個微型C++庫 https://github.com/lotem/mighty_struct
因爲 Rime 需要 C 的接口,就仿照 MightStruct 做了如下修改,請各位技術高手指正:


這次修改將所有接口函數封裝到 RimeApi 結構中,以函數指針的形式提供,通過比較 struct 大小與函數偏移量來檢測 API 是否被支持。
同時,RimeContext、RimeStatus、RimeCommit 等結構也做了相似的版本控制。
代表候選詞的 RimeCandidate 沒有改造爲仿 MightyStruct 形式,這是爲了保持與舊版本 API 的代碼兼容性。

升級到新接口後,使用舊接口的程序無須修改代碼、重新編譯即可。然而,這一升級將破壞與舊版本的二進制兼容。
因此在合併到 master 之前,需要諸位關心輸入法編程,特別是使用過 Rime API 的同學,一同評估 API 修改可能造成的影響,並給出寶貴建議。

謝謝
Reply all
Reply to author
Forward
0 new messages