home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TP_ADV.ZIP / LIST1302.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-11-21  |  1.2 KB  |  63 lines

  1. Unit ListUnit;
  2.  
  3. Interface
  4.  
  5. Type
  6.   ListPtr = ^List;
  7.   List = Object
  8.            next : ListPtr;
  9.            last : ListPtr;
  10.            Constructor Init ( before, after : ListPtr );
  11.            Destructor Done; Virtual
  12.            Procedure SetBeforeLink ( before : ListPtr );
  13.            Procedure SetAfterLink ( after : ListPtr );
  14.            Function GetBeforeLink : ListPtr;
  15.            Function GetAfterLink : ListPtr;
  16.          End;
  17.  
  18. Implementation
  19.  
  20. Constructor List.Init ( before, after : ListPtr );
  21. Var
  22.   tmp : ListPtr;
  23. Begin
  24.   SetBeforeLink ( before );
  25.   SetAfterLink ( after );
  26.   If ( before <> NIL ) Then
  27.     before^.SetAfterLink ( @Self );
  28.   If ( after <> NIL ) Then
  29.     after^.SetBeforeLink ( @Self );
  30. End;
  31.  
  32. Destructor List.Done;
  33. Var
  34.   tmp : ListPtr;
  35. Begin
  36.   tmp := GetBeforeLink;
  37.   tmp^.SetAfterLink ( GetAfterLink );
  38.   tmp := GetAfterLink;
  39.   tmp^.SetBeforeLink ( GetBeforeLink );
  40. End;
  41.  
  42. Procedure List.SetBeforeLink ( before : ListPtr );
  43. Begin
  44.   last := before;
  45. End;
  46.  
  47. Procedure List.SetAfterLink ( after : ListPtr );
  48. Begin
  49.   next := after;
  50. End;
  51.  
  52. Function List.GetBeforeLink : ListPtr;
  53. Begin
  54.   GetBeforeLink := last;
  55. End;
  56.  
  57. Function List.GetAfterLink : ListPtr;
  58. Begin
  59.   GetAfterLink := next;
  60. End;
  61.  
  62. End.
  63.