2019年2月25日 星期一
2019年2月22日 星期五
libchewing 原始碼分析 (1) chewing_new & chewing_new2()
chewing_new()
chewing_new() 不接受任何參數
裡面直接呼叫
chewing_new2() 且 syspath, userpath, logger, loggerdata 這些參數直接填上NULL
chewing_new2()
傳入參數介紹
chewing_new2() 接收四個參數: syspath, userpath, logger, loggerdata
syspath
主要就是搜尋路徑,如果沒有值的話,會呼叫 get_search_path(),根據作業系統不同會有不同的預設路徑,chewing_new2() 會在初始化的過程從此路徑中搜尋檔案 ex: DICT_FIELS, SYMBOL_TABLE_FILES, EASY_SYMBOL_FILES, PINYIN_FILES
至於這些檔案內容是什麼就等之後trace其他部分後再了解
userpath
主要就是存放 userphrase 的路徑,就我之前的理解,Userphrase 指的是詞組 例如: 茶葉 綠茶 這種詞組的檔案
logger
如同字面上的意思做紀錄的 logger,會存放在 chewing context 的 chewing data 裡面
如果值是 NULL 則會設定為 NullLogger (就是完全不做任何logging)
loggerdata
如字面上的意思 logger 的 data 但我也不確定確切的內容會存放何物
與 logger 一樣會存放在 chewing data 裡
行為簡介
主要會是 allocate 一個 chewing_context 然後再 allocate 其他必須的空間
呼叫 chewing_Reset()
接著會從search path中尋找一些檔案的path
## 搜尋 DICT_FILES path
InitDict()
InitTree()
## 從 user path 搜尋 userphrase path
InitUserphrase()
## 搜尋 SYMBOL_TABLE_FILES path
InitSymbolTable()
## 搜尋 EASY_SYMBOL_FILES path
InitEasySymbolInput()
呼叫 chewing_Reset()
接著會從search path中尋找一些檔案的path
## 搜尋 DICT_FILES path
InitDict()
InitTree()
## 從 user path 搜尋 userphrase path
InitUserphrase()
## 搜尋 SYMBOL_TABLE_FILES path
InitSymbolTable()
## 搜尋 EASY_SYMBOL_FILES path
InitEasySymbolInput()
## 搜尋 PINYIN_FILES path
InitPinyin()
最後再回傳chewing_context
InitPinyin()
最後再回傳chewing_context
2019年2月18日 星期一
libchewing 原始碼分析 (0) 前言
由於網路上幾乎找不到關於libchewing原始程式碼的介紹
然後我又對於這個每天都會用到的輸入法有興趣
(想修掉一些bug)
所以就一邊trace code一邊把一些心得寫成文章記錄下來
目前沒有規劃多久出一篇
也沒有規劃要寫多久
一切隨緣看心情 哈哈
然後我又對於這個每天都會用到的輸入法有興趣
(想修掉一些bug)
所以就一邊trace code一邊把一些心得寫成文章記錄下來
目前沒有規劃多久出一篇
也沒有規劃要寫多久
一切隨緣看心情 哈哈
訂閱:
文章 (Atom)
Go lang 學習筆記 - 17 Pointers
``` package main import "fmt" func zeroval(n int) { n = 0 } func zeroptr(n *int) { *n = 0 } func main() { ...
-
因為不可能整個OS全部用 binary 刻出來(是可以 但我不想XD) 所以用點進階的東西來幫助我們 所以接下來要用 x86 架構的 assembly 來寫 因為向後相容性的關係 所以一開始載入 OS 會是 16-bit mode (查了OSDev的 wiki page 說又...
-
``` package main import ( "fmt" "time" ) func main() { i := 2 switch i { case ...
-
由於網路上幾乎找不到關於libchewing原始程式碼的介紹 然後我又對於這個每天都會用到的輸入法有興趣 (想修掉一些bug) 所以就一邊trace code一邊把一些心得寫成文章記錄下來 目前沒有規劃多久出一篇 也沒有規劃要寫多久 一切隨緣看心情 哈哈