Next: , Previous: A.8, Up: A.8


A.8.1 The Generic Package Sequential_IO

Static Semantics

1
The generic library package Sequential_IO has the following declaration:

2

     with Ada.IO_Exceptions;
     generic
        type Element_Type(<>) is private;
     package Ada.Sequential_IO is

3

        type File_Type is limited private;

4

        type File_Mode is (In_File, Out_File, Append_File);

5

        −− File management

6

        procedure Create(File in out File_Type;
                         Mode in File_Mode := Out_File;
                         Name in String := "";
                         Form in String := "");

7

        procedure Open  (File in out File_Type;
                         Mode in File_Mode;
                         Name in String;
                         Form in String := "");

8

        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);

9

        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;

10

        function Is_Open(File in File_Type) return Boolean;

11

        −− Input and output operations

12

        procedure Read  (File in File_Type; Item out Element_Type);
        procedure Write (File in File_Type; Item in Element_Type);

13

        function End_Of_File(File in File_Type) return Boolean;

14

        −− Exceptions

15

        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;

16

     private
        ... −− not specified by the language
     end Ada.Sequential_IO;

17/2
{00360AI95−00360−01} The type File_Type needs finalization (see 7.6) in every instantiation of Sequential_IO.

Incompatibilities With Ada 83

17.a

{incompatibilities with Ada 83} The new enumeration element Append_File may introduce upward incompatibilities. It is possible that a program based on the assumption that File_Mode'Last = Out_File will be illegal (e.g., case statement choice coverage) or execute with a different effect in Ada 95.

17.a.1/2

This paragraph was deleted.{8652/00978652/0097} {00115AI95−00115−01} {00344AI95−00344−01}
Incompatibilities With Ada 95

17.b/2

{00360AI95−00360−01} {incompatibilities with Ada 95} Amendment Correction: File_Type in an instance of Sequential_IO is defined to need finalization. If the restriction No_Nested_Finalization (see D.7) applies to the partition, and File_Type does not have a controlled part, it will not be allowed in local objects in Ada 2005 whereas it would be allowed in original Ada 95. Such code is not portable, as another Ada compiler may have a controlled part in File_Type, and thus would be illegal.