rogue > detach()


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

呼び出し元

rogue/add_pack()

依存関数

rogue/prev()

rogue/next()

依存構造体

rogue/struct/THING

メモ

第一引数にあるTHING構造体(リスト構造)から、

第二引数にあるitemをはずすリスト処理。

コード

rogue.h

#define detach(a,b)   _detach(&a,b)

によってアドレス渡しを隠蔽。

なんちゃって参照渡し。渡せてないけど。

/*
 * detach:
 *      takes an item out of whatever linked list it might be in
 */

void
_detach(THING **list, THING *item)
{
    //リストの値が、指定したitemに等しい。
    if (*list == item)
        *list = next(item);
        //ポインタが入っているので、第二引数のアイテムをリストからはずす
    if (prev(item) != NULL)
        //itemの前の要素が入っている
        item->l_prev->l_next = next(item);
    if (next(item) != NULL)
        item->l_next->l_prev = prev(item);
    item->l_next = NULL;
    item->l_prev = NULL;
}