NIIBE Yutaka
gniib****@m17n*****
2005年 1月 5日 (水) 17:54:12 JST
src-diclib/record.c ですが, last-record1_なんとか などの情報は, sort されている必要ないと思うのですが, あっているでしょうか。 もし, そうであれば, sort されているようにデータ構造を管理しているのは, 必要ありません。 --- orig/src-diclib/record.c +++ mod/src-diclib/record.c @@ -86,7 +86,6 @@ struct trie_node *r; int bit; struct record_column column; - struct trie_node *prev, *next; /* 両端ループ */ struct trie_node *lru_prev, *lru_next; /* 両端ループ */ int dirty; /* LRU のための used, sused ビット */ }; @@ -330,8 +329,6 @@ n->l = n; n->r = n; n->bit = 0; - n->prev = n; - n->next = n; n->lru_next = n; n->lru_prev = n; n->dirty = 0; @@ -515,17 +512,6 @@ } else { p->r = n; } - if (trie_key_cmp(&q->column.key, key) > 0) { - n->prev = q; - n->next = q->next; - q->next = n; - n->next->prev = n; - } else { - n->next = q; - n->prev = q->prev; - q->prev = n; - n->prev->next = n; - } /* LRU の処理 */ if (dirty == LRU_USED) { @@ -603,8 +589,6 @@ } else { *pp = (p->r == q) ? p->l : p->r; } - p->prev->next = p->next; - p->next->prev = p->prev; p->lru_prev->lru_next = p->lru_next; p->lru_next->lru_prev = p->lru_prev; if (p->dirty == LRU_USED) { @@ -620,8 +604,8 @@ static struct trie_node * trie_first (struct trie_root *root) { - return root->root.next == &root->root ? - NULL : root->root.next; + return root->root.lru_next == &root->root ? + NULL : root->root.lru_next; } /* 次のノードがなければ 0 を返す */ @@ -629,7 +613,7 @@ trie_next (struct trie_root *root, struct trie_node *cur) { - return cur->next == &root->root ? 0 : cur->next; + return cur->lru_next == &root->root ? 0 : cur->lru_next; } /* @@ -641,7 +625,7 @@ int *nr_used, int *nr_sused) { struct trie_node* p; - for (p = root->root.next; p != &root->root; p = p->next) { + for (p = root->root.lru_next; p != &root->root; p = p->lru_next) { trie_column_free(&p->column); } anthy_free_allocator(root->node_ator); @@ -651,7 +635,7 @@ } /* - * LRU リストの先頭から count 番目までを残して残りを開放する + * LRU リストの先頭から count 番目までを残して残りを解放する */ static void trie_remove_old (struct trie_root *root, int count,