home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / OLists.def < prev    next >
Text File  |  1994-05-25  |  5KB  |  175 lines

  1. |##########|
  2. |#MAGIC   #|CKOLFLFP
  3. |#PROJECT #|""
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx-x-x--x-----x-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|x----x----------
  9. |##########|
  10. DEFINITION MODULE OLists;
  11.  
  12.   DEFINITION MODULE BiLists(Node : POINTER TO NodeObj);
  13.  
  14.   TYPE
  15.     NodeObj   = OBJECT
  16.                   prev,next  : Node;
  17.                   DEFERRED METHOD greater(as : Node):Node;
  18.                   DESTRUCTOR Delete;
  19.                   METHOD Clone():Node;
  20.                 END;
  21.  
  22.     Condition = PROCEDURE(n : Node):BOOLEAN;
  23.     ApplyProc = PROCEDURE(n : Node);
  24.  
  25.     List    =   POINTER TO ListObj;
  26.     ListObj =   OBJECT
  27.                   first,last : Node;
  28.  
  29.                   CONSTRUCTOR Create(nodes : LIST OF Node);
  30.                   DESTRUCTOR Delete;
  31.  
  32.                   METHOD Destruct;
  33.  
  34.                   METHOD InsertFirst(n : Node);
  35.                   METHOD InsertLast(n : Node);
  36.                   METHOD InsertAfter(n,after : Node);
  37.                   METHOD InsertBefore(n,before : Node);
  38.  
  39.                   METHOD RemoveNode(n : Node);
  40.                   METHOD DeleteNode(n : Node);
  41.  
  42.                   METHOD RemoveAll;
  43.                   METHOD DeleteAll;
  44.  
  45.                   METHOD RemoveIF(if : Condition);
  46.                   METHOD DeleteIF(if : Condition);
  47.  
  48.                   METHOD Sort;
  49.  
  50.                   METHOD Apply(app : ApplyProc);
  51.                   METHOD ApplyIF(app : ApplyProc;if : Condition);
  52.  
  53.                   METHOD Find(if : Condition;from : Node := NIL):Node;
  54.  
  55.                   METHOD Clone():List;
  56.  
  57.                   METHOD Append(VAR l : List);
  58.                 END;
  59.  
  60.   END BiLists;
  61.  
  62.   DEFINITION MODULE BiLists2(Node : POINTER TO NodeObj);
  63.  
  64.     DEFINITION MODULE OldBiLists = BiLists(Node);
  65.  
  66.   TYPE
  67.     List      = POINTER TO ListObj;
  68.     NodeObj   = OBJECT OF OldBiLists.Node;
  69.                   METHOD Destruct;
  70.                   list    : List;
  71.                 END;
  72.  
  73.     Condition = PROCEDURE(n : Node):BOOLEAN;
  74.     ApplyProc = PROCEDURE(n : Node);
  75.  
  76.     ListObj =   OBJECT OF OldBiLists.List;
  77.                   first,last : Node;
  78.  
  79.                   METHOD Destruct;
  80.  
  81.                   METHOD InsertFirst(n : Node);
  82.                   METHOD InsertLast(n : Node);
  83.                   METHOD InsertAfter(n,after : Node);
  84.                   METHOD InsertBefore(n,before : Node);
  85.  
  86.                   METHOD RemoveNode(n : Node);
  87.                   METHOD DeleteNode(n : Node);
  88.  
  89.                   METHOD RemoveAll;
  90.                   METHOD DeleteAll;
  91.                 END;
  92.  
  93.   END BiLists2;
  94.  
  95.   DEFINITION MODULE CLists(Node : POINTER TO NodeObj);
  96.  
  97.   IMPORT OBuffers;
  98.  
  99.   EXCEPTION
  100.     OutOfList : "Cursor out of list";
  101.     NotFound  : "Element not found";
  102.  
  103.   TYPE
  104.     NodeObj  = OBJECT END;
  105.     CNode    = POINTER TO CNodeObj;
  106.  
  107.     DEFINITION MODULE CLists   = BiLists(CNode);
  108.     DEFINITION MODULE CStacks  = OBuffers.Stacks(CNode);
  109.  
  110.   TYPE
  111.     CNodeObj = OBJECT OF CLists.Node;
  112.                  data  : Node;
  113.                END;
  114.     Condition = PROCEDURE(n : Node):BOOLEAN;
  115.     ApplyProc = PROCEDURE(n : Node);
  116.  
  117.     List     = POINTER TO ListObj;
  118.     ListObj  = OBJECT OF CLists.List   AS clist,
  119.                          CStacks.Stack AS stack;
  120.                   cursor : CNode;
  121.  
  122.                   CONSTRUCTOR Create;
  123.                   CONSTRUCTOR Delete;
  124.  
  125.                   METHOD First;
  126.                   METHOD Last;
  127.                   METHOD Next;
  128.                   METHOD Prev;
  129.                   METHOD Seek(n : Node);
  130.  
  131.                   METHOD Push;
  132.                   METHOD Pop;
  133.                   METHOD Swap;
  134.  
  135.                   METHOD isFirst():BOOLEAN;
  136.                   METHOD isLast():BOOLEAN;
  137.                   METHOD isEmpty():BOOLEAN;
  138.                   METHOD isValid():BOOLEAN;
  139.  
  140.                   METHOD Destruct;
  141.  
  142.                   METHOD Get():Node;
  143.                   METHOD Change(n : Node):Node;
  144.  
  145.                   METHOD InsertFirst(n : Node);
  146.                   METHOD InsertLast(n : Node);
  147.                   METHOD InsertAfter(n : Node);
  148.                   METHOD InsertBefore(n : Node);
  149.  
  150.                   METHOD RemoveNode;
  151.                   METHOD DeleteNode;
  152.  
  153.                   METHOD RemoveAll;
  154.                   METHOD DeleteAll;
  155.  
  156.                   METHOD RemoveIF(if : Condition);
  157.                   METHOD DeleteIF(if : Condition);
  158.  
  159.                   METHOD Sort;
  160.  
  161.                   METHOD Apply(app : ApplyProc);
  162.                   METHOD ApplyIF(app : ApplyProc;if : Condition);
  163.  
  164.                   METHOD Find(if : Condition);
  165.  
  166.                   METHOD Clone():List;
  167.  
  168.                   METHOD Append(VAR l : List);
  169.  
  170.                 END;
  171.   END CLists;
  172.  
  173. END OLists.
  174.  
  175.