home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / m2 / CycloneModules.lha / OOModules / txt / Lists.mod < prev    next >
Text File  |  1996-07-02  |  1KB  |  86 lines

  1. IMPLEMENTATION MODULE Lists;
  2.  
  3. FROM SYSTEM IMPORT ADDRESS;
  4. FROM Objects IMPORT TObject;
  5. IMPORT H:Heap,io:InOut;
  6.  
  7.  
  8. CONSTRUCTOR TList.Init;
  9. BEGIN
  10.  head:=NIL; tail:=NIL; elements:=0;
  11. END TList.Init;
  12.  
  13. PROCEDURE TList.Add(d:ADDRESS);
  14. VAR n:NodePtr;
  15. BEGIN
  16.  H.Allocate(n,SIZE(Node));
  17.  WITH n^ DO 
  18.   prev:=tail;
  19.   next:=NIL;
  20.   data:=d;
  21.  END;
  22.  IF n^.prev#NIL THEN n^.prev^.next:=n; ELSE head:=n; END;
  23.  tail:=n;
  24.  INC(elements);
  25. END TList.Add;
  26.  
  27. PROCEDURE TList.DoProc(d:ADDRESS);
  28. BEGIN
  29.  (* Empty procedure *)
  30. END TList.DoProc;
  31.  
  32. PROCEDURE TList.DoForward;
  33. VAR n:NodePtr;
  34. BEGIN
  35.  n:=head;
  36.  WHILE n#NIL DO
  37.   DoProc(n^.data);
  38.   n:=n^.next;
  39.  END;
  40. END TList.DoForward;
  41.  
  42. PROCEDURE TList.DoBackward;
  43. VAR n:NodePtr;
  44. BEGIN
  45.  n:=tail;
  46.  WHILE n#NIL DO
  47.   DoProc(n^.data);
  48.   n:=n^.prev;
  49.  END;
  50. END TList.DoBackward;
  51.  
  52. PROCEDURE TList.CountElements():LONGINT;
  53. BEGIN
  54.  RETURN elements;
  55. END TList.CountElements;
  56.  
  57. PROCEDURE TList.Prev(n:NodePtr):NodePtr;
  58. BEGIN
  59.  IF n#NIL THEN RETURN n^.prev; ELSE RETURN NIL; END;
  60. END TList.Prev;
  61.  
  62. PROCEDURE TList.Next(n:NodePtr):NodePtr;
  63. BEGIN
  64.  IF n#NIL THEN RETURN n^.next; ELSE RETURN NIL; END;
  65. END TList.Next;
  66.  
  67. PROCEDURE TList.FreeData(d:ADDRESS);
  68. BEGIN
  69. END TList.FreeData;
  70.  
  71. PROCEDURE TList.Destroy;
  72. VAR n,n2:NodePtr;
  73. BEGIN
  74.  n:=head;
  75.  WHILE n#NIL DO
  76.   n2:=n;
  77.   n:=n^.next;
  78.   FreeData(n2^.data);
  79.   H.Deallocate(n2);
  80.  END;
  81.  elements:=0;
  82.  head:=NIL; tail:=NIL;
  83. END TList.Destroy;
  84.  
  85. END Lists.
  86.