summaryrefslogtreecommitdiffstats
path: root/docs/fav.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/fav.txt')
-rw-r--r--docs/fav.txt41
1 files changed, 41 insertions, 0 deletions
diff --git a/docs/fav.txt b/docs/fav.txt
new file mode 100644
index 00000000..32a616cc
--- /dev/null
+++ b/docs/fav.txt
@@ -0,0 +1,41 @@
+Favorite ver.4
+
+Feature
+=======
+•重寫、整個架構改變
+•folding
+
+Structure
+=========
+ fav4 的主要架構如下:
+
+•fav_t
+ 進入我的最愛時,看到的東西就是根據 fav_t 生出來的。
+ 裡面紀錄者,這一個 level 中有多少個看板、目錄、分隔線。(favh)
+
+•fav_type_t
+ 這算是架在以下三個東西之上的介面,等於是將他們視為同一種東西,方便之後的存取。
+ 用一個 void * 指標指向某塊記憶體,存取時可透過 type 變數來得知正確的型態。
+
+•fav_board_t
+ 紀錄了 bid 及上次拜訪時間。
+
+•fav_line_t
+ 紀錄了 lid
+
+•fav_folder_t
+ 紀錄了 fid 及可自訂的名稱。
+
+•fav.c 中以 cast_(board|line|folder)_t() 來將一個 fav_type_t 轉為正確的型態。
+
+Policy
+======
+•為了避免過度的資料搬移,當將一個 item 從我的最愛中移除時,只將他的 FAVH_FAV
+ flag 移除。而沒有這個 flag 的 item 也不被視為我的最愛。
+
+•我的最愛中,沒設 FAVH_FAV 的資料,將在某些時候,如寫入檔案時,呼叫
+ rebuild_fav 清除乾淨。
+
+•站長搬移看板所用的 t ,因為不能只存在 nbrd 裡面,又不然再弄出額外的空間,
+ 所以當站長不在我的最愛按了 t ,會把這個記錄暫存在 fav 中(FAVH_ADM_TAG == 1,
+ FAVH_FAV == 0)。