home *** CD-ROM | disk | FTP | other *** search
- PROGRAM MyDList ;
-
- USES
- CRT ,
- DListOBJ ,
- Elements ,
- BaseTypes ;
-
-
-
-
- VAR
- dl : PDListOBJ ;
- d : PElementOBJ ;
- i : INTEGER ;
- s : STRING ;
- r : REAL ;
-
-
-
-
- BEGIN { ******* MAIN ******* }
-
- WriteLn ;
-
- WriteLn ( 'Memory before operation : ' , MemAvail : 5 ) ;
-
- dl := New ( PDListOBJ , Init ) ;
-
- dl^.Add ( New ( PStrOBJ , Init ( 'One!' ) ) ) ;
- dl^.Add ( New ( PRealOBJ , Init ( 1.5 ) ) ) ;
- dl^.Add ( New ( PStrOBJ , Init ( 'Two!' ) ) ) ;
- dl^.Add ( New ( PRealOBJ , Init ( 2.5 ) ) ) ;
-
- WriteLn ( 'Memory with four items : ' , MemAvail : 5 ) ;
-
- d := PElementOBJ ( dl^.Get ) ;
-
- d^.Display ;
-
- Dispose ( d , Done ) ;
-
- WriteLn ( ' -- The last added!' ) ;
-
- WHILE ( dl^.PrevOne )
- DO ;
-
- d := PElementOBJ ( dl^.Get ) ;
-
- d^.Display ;
-
- Dispose ( d , Done ) ;
-
- WriteLn ( ' -- The list head!' ) ;
-
- WHILE ( dl^.NextOne )
- DO ;
-
- dl^.Add ( New ( PIntOBJ , Init ( 3 ) ) ) ;
- dl^.Add ( New ( PRealOBJ , Init ( 3.5 ) ) ) ;
- dl^.Add ( New ( PIntOBJ , Init ( 4 ) ) ) ;
-
- WHILE ( dl^.PrevOne )
- DO ;
-
- WriteLn ( 'Memory with three more items : ' , MemAvail : 5 ) ;
-
- i := 30000 ;
- r := -100000 ;
- s := 'HA HA!' ;
-
- REPEAT
-
- CASE dl^.TheType
- OF
-
- STR_OBJ : dl^.SetData ( @s ) ;
-
- INT_OBJ : dl^.SetData ( @i ) ;
-
- REAL_OBJ : dl^.SetData ( @r ) ;
-
-
- ELSE
-
- WriteLn ( 'We have a problem!' ) ;
-
- END ; { CASE dl^.TheType }
-
- UNTIL ( NOT ( dl^.NextOne ) ) ;
-
-
- WHILE ( NOT ( dl^.Empty ) )
- DO
- BEGIN
-
- d := PElementOBJ ( dl^.Get ) ;
-
- d^.Display ;
-
- Write ( ' ' ) ;
-
- Dispose ( d , Done ) ;
-
- END ; { WHILE }
-
- WriteLn ;
-
- WriteLn ( 'Memory after disposing of all elements : ' , MemAvail : 5 ) ;
-
- Dispose ( dl , Done ) ;
-
- WriteLn ( 'Memory after disposing of the stack : ' , MemAvail : 5 ) ;
-
- END .