1with Ada.Streams; use Ada.Streams; 2package abstract1 is 3 type T is abstract tagged limited null record; 4 function Input (Stream : not null access Root_Stream_Type'Class) return T 5 is abstract; 6 7 function New_T (Stream : not null access Root_Stream_Type'Class) 8 return T'Class; 9 10 type IT is limited new T with record 11 I : Integer; 12 end record; 13 function Input (Stream : not null access Root_Stream_Type'Class) return IT; 14 15 type FT is limited new T with record 16 F : Float; 17 end record; 18 function Input (Stream : not null access Root_Stream_Type'Class) return FT; 19end abstract1; 20