home *** CD-ROM | disk | FTP | other *** search
/ Chip 1995 March / CHIP3.mdf / programm / prog4 / genpkg.ada < prev    next >
Encoding:
Text File  |  1991-07-01  |  1.9 KB  |  74 lines

  1.                                     -- Chapter 29 - Program 1
  2. generic
  3.    type MY_INT_TYPE is (<>);
  4.    type MY_REAL_TYPE is digits <>;
  5. package EasyPkg is
  6.    procedure Trade_Values (X, Y : in out MY_INT_TYPE);
  7.    function Average_Values (X, Y : MY_REAL_TYPE)
  8.                                        return MY_REAL_TYPE;
  9. end EasyPkg;
  10.  
  11.  
  12. package body EasyPkg is
  13.    procedure Trade_Values (X, Y : in out MY_INT_TYPE) is
  14.    Temp : MY_INT_TYPE;
  15.    begin
  16.       Temp := X;
  17.       X := Y;
  18.       Y := Temp;
  19.    end Trade_Values;
  20.  
  21.    function Average_Values (X, Y : MY_REAL_TYPE)
  22.                                        return MY_REAL_TYPE is
  23.    begin
  24.       return (X + Y) / 2.0;
  25.    end Average_Values;
  26.  
  27. end EasyPkg;
  28.  
  29.  
  30.  
  31. with Text_IO, EasyPkg;
  32. use Text_IO;
  33.  
  34. procedure GenPkg is
  35.  
  36. type MY_NEW_TYPE is new INTEGER range -12..123;
  37. type MY_NEW_FLOAT is new FLOAT digits 6;
  38.  
  39. package Funny_Stuff is new EasyPkg(MY_NEW_TYPE,MY_NEW_FLOAT);
  40. use Funny_Stuff;
  41. package Usual_Stuff is new EasyPkg(INTEGER,FLOAT);
  42. use Usual_Stuff;
  43.  
  44. Int1 : INTEGER := 12;
  45. Int2 : INTEGER := 35;
  46. My_Int1 : MY_NEW_TYPE := 1;
  47. My_Int2 : MY_NEW_TYPE := 14;
  48.  
  49. Real1 : FLOAT;
  50. My_Real1 : MY_NEW_FLOAT;
  51.  
  52. begin
  53.    Trade_Values(Int1, Int2);       -- Uses Usual_Stuff.Trade_Values
  54.    Trade_Values(My_Int1, My_Int2); -- Uses Funny_Stuff.Trade_Values
  55.    Usual_Stuff.Trade_Values(Int1, Int2);
  56.    Funny_Stuff.Trade_Values(My_Int1, My_Int2);
  57. -- Usual_Stuff.Trade_Values(My_Int1, My_Int2);   -- Illegal
  58. -- Trade_Values(My_Int1, Int2);                  -- Illegal
  59.  
  60.    Real1 := Average_Values(2.71828, 3.141592);
  61.    Real1 := Average_Values(Real1, 2.0 * 3.141592);
  62.    My_Real1 := Average_Values(12.3, 27.345);
  63.    My_Real1 := Average_Values(My_Real1, 2.0 * 3.141592);
  64.    My_Real1 := Funny_Stuff.Average_Values(12.3, 27.345);
  65. end GenPkg;
  66.  
  67.  
  68.  
  69.  
  70. -- Result of execution
  71.  
  72. -- (There is no output from this program)
  73.  
  74.