久違了朋友們,
討論個編程上的問題吧。
因爲擔心 API 的擴展性不足以支持未來的擴充,我決心對 Rime 的 C API 改造一番。
重點解決版本兼容和數據結構擴展的問題。
因爲 Rime 需要 C 的接口,就仿照 MightStruct 做了如下修改,請各位技術高手指正:
這次修改將所有接口函數封裝到 RimeApi 結構中,以函數指針的形式提供,通過比較 struct 大小與函數偏移量來檢測 API 是否被支持。
同時,RimeContext、RimeStatus、RimeCommit 等結構也做了相似的版本控制。
代表候選詞的 RimeCandidate 沒有改造爲仿 MightyStruct 形式,這是爲了保持與舊版本 API 的代碼兼容性。
升級到新接口後,使用舊接口的程序無須修改代碼、重新編譯即可。然而,這一升級將破壞與舊版本的二進制兼容。
因此在合併到 master 之前,需要諸位關心輸入法編程,特別是使用過 Rime API 的同學,一同評估 API 修改可能造成的影響,並給出寶貴建議。
謝謝