home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 09 / dskcache / queueset.inc < prev    next >
Encoding:
Text File  |  1987-06-29  |  2.0 KB  |  59 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                          QUEUESET.INC                                   *)
  3. (*             Schlangenverwaltung fuer CACHE.PAS                          *)
  4. (* ----------------------------------------------------------------------- *)
  5.  
  6.   TYPE
  7.     QuPtr_     = ^QuLink_;
  8.     QuLink_    = RECORD Next, Prev : QuPtr_; END;
  9.     QuHead_    = QuLink_;
  10. (* ----------------------------------------------------------------------- *)
  11.  PROCEDURE  QuInit (VAR Lnk);
  12.  
  13.      VAR  Link : QuLink_ ABSOLUTE Lnk;
  14.  
  15.      BEGIN  Link.Next:= ADDR (Link);  Link.Prev:= ADDR (Link);  END;
  16. (* ----------------------------------------------------------------------- *)
  17.   PROCEDURE  QuOut (VAR Lnk);
  18.  
  19.      VAR  Link : QuLink_ ABSOLUTE Lnk;
  20.  
  21.       BEGIN
  22.         WITH Link DO
  23.           BEGIN
  24.             Prev^.Next:= Link.Next;  Next^.Prev:= Link.Prev; QuInit (Link);
  25.           END;
  26.       END;
  27. (* ----------------------------------------------------------------------- *)
  28.   PROCEDURE  QuClear (VAR Hed);
  29.  
  30.      VAR  Head : QuLink_ ABSOLUTE Hed;
  31.  
  32.       BEGIN
  33.         WHILE Head.Next <> Head.Prev DO  QuOut (Head.Next^);
  34.       END;
  35. (* ----------------------------------------------------------------------- *)
  36.   PROCEDURE  QuInto (VAR Hed, Lnk);
  37.  
  38.      VAR  Head : QuLink_ ABSOLUTE Hed;
  39.           Link : QuLink_ ABSOLUTE Lnk;
  40.  
  41.       BEGIN
  42.         QuOut (Link);
  43.         Link.Next:= Head.Next;
  44.         Link.Prev:= ADDR (Head);
  45.         Head.Next^.Prev:= ADDR (Link);
  46.         Head.Next:= ADDR (Link);
  47.       END;
  48. (* ----------------------------------------------------------------------- *)
  49.   FUNCTION  QuEmpty (VAR Hed): Boolean;
  50.  
  51.      VAR Head : QuLink_ ABSOLUTE Hed;
  52.  
  53.       BEGIN
  54.         QuEmpty:= (Head.Next = Head.Next^.Next) AND
  55.                   (Head.Prev = Head.Prev^.Prev);
  56.       END;
  57. (* ----------------------------------------------------------------------- *)
  58. (*                           Ende QUEUESET.INC                             *)
  59.