home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* QUEUESET.INC *)
- (* Schlangenverwaltung fuer CACHE.PAS *)
- (* ----------------------------------------------------------------------- *)
-
- TYPE
- QuPtr_ = ^QuLink_;
- QuLink_ = RECORD Next, Prev : QuPtr_; END;
- QuHead_ = QuLink_;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE QuInit (VAR Lnk);
-
- VAR Link : QuLink_ ABSOLUTE Lnk;
-
- BEGIN Link.Next:= ADDR (Link); Link.Prev:= ADDR (Link); END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE QuOut (VAR Lnk);
-
- VAR Link : QuLink_ ABSOLUTE Lnk;
-
- BEGIN
- WITH Link DO
- BEGIN
- Prev^.Next:= Link.Next; Next^.Prev:= Link.Prev; QuInit (Link);
- END;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE QuClear (VAR Hed);
-
- VAR Head : QuLink_ ABSOLUTE Hed;
-
- BEGIN
- WHILE Head.Next <> Head.Prev DO QuOut (Head.Next^);
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE QuInto (VAR Hed, Lnk);
-
- VAR Head : QuLink_ ABSOLUTE Hed;
- Link : QuLink_ ABSOLUTE Lnk;
-
- BEGIN
- QuOut (Link);
- Link.Next:= Head.Next;
- Link.Prev:= ADDR (Head);
- Head.Next^.Prev:= ADDR (Link);
- Head.Next:= ADDR (Link);
- END;
- (* ----------------------------------------------------------------------- *)
- FUNCTION QuEmpty (VAR Hed): Boolean;
-
- VAR Head : QuLink_ ABSOLUTE Hed;
-
- BEGIN
- QuEmpty:= (Head.Next = Head.Next^.Next) AND
- (Head.Prev = Head.Prev^.Prev);
- END;
- (* ----------------------------------------------------------------------- *)
- (* Ende QUEUESET.INC *)
-