acl4のページ0002
(1)
#if (a_Version >= 1)
#define DoublyLinkList a_DoublyLinkList
#define DoublyLinkList_ini a_DoublyLinkList_ini
#define DoublyLinkList_insTail a_DoublyLinkList_insTail
#define DoublyLinkList_insHead a_DoublyLinkList_insHead
#define DoublyLinkList_rmv a_DoublyLinkList_rmv
#endif
a_class(a_DoublyLinkList) { a_DoublyLinkList *prv, *nxt; };
a_static void a_DoublyLinkList_ini(a_DoublyLinkList *w) { w->prv = w->nxt = w; }
a_static void a_DoublyLinkList_insTail(a_DoublyLinkList *w, a_DoublyLinkList *tgt)
{
a_DoublyLinkList *lst = w->prv;
lst->nxt = tgt;
tgt->prv = lst;
tgt->nxt = w;
w ->prv = tgt;
}
a_static void a_DoublyLinkList_insHead(a_DoublyLinkList *w, a_DoublyLinkList *tgt)
{
a_DoublyLinkList *hed = w->nxt;
w ->nxt = tgt;
tgt->prv = w;
tgt->nxt = hed;
hed->prv = tgt;
}
a_static void a_DoublyLinkList_rmv(a_DoublyLinkList *tgt)
{
a_DoublyLinkList *prv = tgt->prv;
a_DoublyLinkList *nxt = tgt->nxt;
prv->nxt = nxt;
nxt->prv = prv;
}