home *** CD-ROM | disk | FTP | other *** search
- -- Chapter 28 - Program 5
- generic
- type ACCESS_INT is access INTEGER;
- procedure Swap_Int_Data(Dat1, Dat2 : ACCESS_INT);
-
-
-
- procedure Swap_Int_Data(Dat1, Dat2 : ACCESS_INT) is
- Temp : ACCESS_INT := new INTEGER;
- begin
- Temp.all := Dat1.all;
- Dat1.all := Dat2.all;
- Dat2.all := Temp.all;
- end Swap_Int_Data;
-
-
-
-
- generic
- type ANY_TYPE is private;
- type ACCESS_ANY is access ANY_TYPE;
- procedure Swap_Any_Data(Dat1, Dat2 : ACCESS_ANY);
-
-
-
- procedure Swap_Any_Data(Dat1, Dat2 : ACCESS_ANY) is
- Temp : ACCESS_ANY := new ANY_TYPE;
- begin
- Temp.all := Dat1.all;
- Dat1.all := Dat2.all;
- Dat2.all := Temp.all;
- end Swap_Any_Data;
-
-
-
-
- with Text_IO, Swap_Int_Data, Swap_Any_Data;
- use Text_IO;
-
- procedure AccesGen is
-
- type ACCESS_INT is access INTEGER;
- Address1, Address2 : ACCESS_INT := new INTEGER;
-
- procedure Transpose_Integers is new Swap_Int_Data(ACCESS_INT);
-
- type NAME_ARRAY is array(1..6) of CHARACTER;
-
- type PERSONAL_STUFF is
- record
- Age : INTEGER;
- Grade : INTEGER;
- Name : NAME_ARRAY;
- end record;
-
- type PERSONAL_ACCESS is access PERSONAL_STUFF;
- Male_Student : PERSONAL_ACCESS := new PERSONAL_STUFF;
- Female_Student : PERSONAL_ACCESS := new PERSONAL_STUFF;
-
- type ACCESS_FLOAT is access FLOAT;
- Address_Float1 : ACCESS_FLOAT;
- Address_Float2 : ACCESS_FLOAT;
-
- procedure Transpose_Floats is new Swap_Any_Data(FLOAT,
- ACCESS_FLOAT);
- procedure Transpose_Records is new Swap_Any_Data(PERSONAL_STUFF,
- PERSONAL_ACCESS);
- procedure Transpose_Ints is new Swap_Any_Data(INTEGER, ACCESS_INT);
-
- begin
-
- Put_Line("Begin the generic access routine");
-
- Address1.all := 23;
- Address2.all := 13 * Address1.all;
- Transpose_Integers(Address1, Address2);
- Transpose_Ints(Address1, Address2);
-
- Address_Float1 := new FLOAT;
- Address_Float2 := new FLOAT;
- Address_Float1.all := 3.141592;
- Address_Float2.all := 144.0;
- Transpose_Floats(Address_Float1, Address_Float2);
-
- Male_Student.all := (16, 11, "Johnny");
- Female_Student.all := (15, 11, "Sandy ");
- Transpose_Records(Male_Student, Female_Student);
-
- end Accesgen;
-
-
-
-
- -- Result of execution
-
- -- Begin the generic access routine
-
-