home *** CD-ROM | disk | FTP | other *** search
- Unit ListUnit;
-
- Interface
-
- Type
- ListPtr = ^List;
- List = Object
- next : ListPtr;
- last : ListPtr;
- Constructor Init ( before, after : ListPtr );
- Destructor Done; Virtual
- Procedure SetBeforeLink ( before : ListPtr );
- Procedure SetAfterLink ( after : ListPtr );
- Function GetBeforeLink : ListPtr;
- Function GetAfterLink : ListPtr;
- End;
-
- Implementation
-
- Constructor List.Init ( before, after : ListPtr );
- Var
- tmp : ListPtr;
- Begin
- SetBeforeLink ( before );
- SetAfterLink ( after );
- If ( before <> NIL ) Then
- before^.SetAfterLink ( @Self );
- If ( after <> NIL ) Then
- after^.SetBeforeLink ( @Self );
- End;
-
- Destructor List.Done;
- Var
- tmp : ListPtr;
- Begin
- tmp := GetBeforeLink;
- tmp^.SetAfterLink ( GetAfterLink );
- tmp := GetAfterLink;
- tmp^.SetBeforeLink ( GetBeforeLink );
- End;
-
- Procedure List.SetBeforeLink ( before : ListPtr );
- Begin
- last := before;
- End;
-
- Procedure List.SetAfterLink ( after : ListPtr );
- Begin
- next := after;
- End;
-
- Function List.GetBeforeLink : ListPtr;
- Begin
- GetBeforeLink := last;
- End;
-
- Function List.GetAfterLink : ListPtr;
- Begin
- GetAfterLink := next;
- End;
-
- End.