Annotated Ada Reference ManualLegal Information
Table of Contents   Index   References   Search   Previous   Next 

 A.8.4 The Generic Package Direct_IO

Static Semantics

1
The generic library package Direct_IO has the following declaration: 
2
with Ada.IO_Exceptions;
generic
   type Element_Type is private;
package Ada.Direct_IO is
3
   type File_Type is limited private;
4
   type File_Mode is (In_File, Inout_File, Out_File);
   type Count     is range 0 .. implementation-defined;
   subtype Positive_Count is Count range 1 .. Count'Last;
5
   -- File management
6
   procedure Create(File : in out File_Type;
                    Mode : in File_Mode := Inout_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;
                                        From : in Positive_Count);
   procedure Read (File : in File_Type; Item : out Element_Type);
13
   procedure Write(File : in File_Type; Item : in  Element_Type;
                                        To   : in Positive_Count);
   procedure Write(File : in File_Type; Item : in Element_Type);
14
   procedure Set_Index(File : in File_Type; To : in Positive_Count);
15
   function Index(File : in File_Type) return Positive_Count;
   function Size (File : in File_Type) return Count;
16
   function End_Of_File(File : in File_Type) return Boolean;
17
   -- Exceptions
18
   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;
19
private
   ... -- not specified by the language
end Ada.Direct_IO;
19.a
Reason: The Element_Type formal of Direct_IO does not have an unknown_discriminant_part (unlike Sequential_IO) so that the implementation can make use of the ability to declare uninitialized variables of the type. 
20/2
 {AI95-00360-01} The type File_Type needs finalization (see 7.6) in every instantiation of Direct_IO.
20.a.1/2
This paragraph was deleted.Implementation Note: {8652/0097} {AI95-00115-01} {AI95-00344-01} File_Type cannot be implemented as a (directly) controlled type, as Ada.Direct_IO can be instantiated at any nesting depth. File_Type could have a component of a controlled type, as long as that type is declared in some other (non-generic) package. 

Incompatibilities With Ada 95

20.a/2
{AI95-00360-01} {incompatibilities with Ada 95} Amendment Correction: File_Type in an instance of Direct_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. 

Table of Contents   Index   References   Search   Previous   Next 
Ada-Europe Sponsored by Ada-Europe