(3)
       with Ada.IO_Exceptions;
       package Ada.Streams.Stream_IO is
(4)
           type Stream_Access is access all Root_Stream_Type'Class;
(5)
           type File_Type is limited private;
(6)
           type File_Mode is (In_File, Out_File, Append_File);
(7)
           type    Count          is range 0 .. implementation-defined;
           subtype Positive_Count is Count range 1 .. Count'Last;
             -- Index into file, in stream elements.
(8)
           procedure Create (File : in out File_Type;
                             Mode : in File_Mode := Out_File;
                             Name : in String    := "";
                             Form : in String    := "");
(9)
           procedure Open (File : in out File_Type;
                           Mode : in File_Mode;
                           Name : in String;
                           Form : in String := "");
(10)
           procedure Close  (File : in out File_Type);
           procedure Delete (File : in out File_Type);
           procedure Reset  (File : in out File_Type; Mode : in File_Mode);
           procedure Reset  (File : in out File_Type);
(11)
           function Mode (File : in File_Type) return File_Mode;
           function Name (File : in File_Type) return String;
           function Form (File : in File_Type) return String;
(12)
           function Is_Open     (File : in File_Type) return Boolean;
           function End_Of_File (File : in File_Type) return Boolean;
(13)
           function Stream (File : in File_Type) return Stream_Access;
               -- Return stream access for use with T'Input and T'Output
(14)
(15)
           -- Read array of stream elements from file
           procedure Read (File : in  File_Type;
                           Item : out Stream_Element_Array;
                           Last : out Stream_Element_Offset;
                           From : in  Positive_Count);
(16)
           procedure Read (File : in  File_Type;
                           Item : out Stream_Element_Array;
                           Last : out Stream_Element_Offset);
(17)
(18)
           -- Write array of stream elements into file
           procedure Write (File : in File_Type;
                            Item : in Stream_Element_Array;
                            To   : in Positive_Count);
(19)
           procedure Write (File : in File_Type;
                                  Item : in Stream_Element_Array);
(20)
(21)
           -- Operations on position within file
(22)
           procedure Set_Index(File : in File_Type; To : in Positive_Count);
(23)
           function Index(File : in File_Type) return Positive_Count;
           function Size (File : in File_Type) return Count;
(24)
           procedure Set_Mode(File : in out File_Type; Mode : in File_Mode);
(25)
           procedure Flush(File : in out File_Type);
(26)
           -- exceptions
           Status_Error : exception renames IO_Exceptions.Status_Error;
           Mode_Error   : exception renames IO_Exceptions.Mode_Error;
           Name_Error   : exception renames IO_Exceptions.Name_Error;
           Use_Error    : exception renames IO_Exceptions.Use_Error;
           Device_Error : exception renames IO_Exceptions.Device_Error;
           End_Error    : exception renames IO_Exceptions.End_Error;
           Data_Error   : exception renames IO_Exceptions.Data_Error;
(27)
       private
          ... -- not specified by the language
       end Ada.Streams.Stream_IO;
  
  -- Email comments, additions, corrections, gripes, kudos, etc. to: