Next: , Previous: A.8.5, Up: Annex A


A.9 The Generic Package Storage_IO

1
The generic package Storage_IO provides for reading from and writing to an in−memory buffer. This generic package supports the construction of user−defined input−output packages.

Static Semantics

2
The generic library package Storage_IO has the following declaration:

3

     with Ada.IO_Exceptions;
     with System.Storage_Elements;
     generic
        type Element_Type is private;
     package Ada.Storage_IO is   pragma Preelaborate(Storage_IO);

4

        Buffer_Size constant System.Storage_Elements.Storage_Count :=
           implementation−defined;
        subtype Buffer_Type is
           System.Storage_Elements.Storage_Array(1..Buffer_Size);

5

        −− Input and output operations

6

        procedure Read (Buffer in  Buffer_Type; Item out Element_Type);

7

        procedure Write(Buffer out Buffer_Type; Item in  Element_Type);

8

        −− Exceptions

9

        Data_Error   exception renames IO_Exceptions.Data_Error;
     end Ada.Storage_IO;

10
In each instance, the constant Buffer_Size has a value that is the size (in storage elements) of the buffer required to represent the content of an object of subtype Element_Type, including any implicit levels of indirection used by the implementation. The Read and Write procedures of Storage_IO correspond to the Read and Write procedures of Direct_IO (see A.8.4), but with the content of the Item parameter being read from or written into the specified Buffer, rather than an external file.

     NOTES

11

21  A buffer used for Storage_IO holds only one element at a time; an external file used for Direct_IO holds a sequence of elements.