A.9 The Generic Package Storage_IO
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
The generic library
package Storage_IO has the following declaration:
with Ada.IO_Exceptions;
with System.Storage_Elements;
generic
type Element_Type
is private;
package Ada.Storage_IO
with Preelaborate, Global =>
in out synchronized is
Buffer_Size :
constant System.Storage_Elements.Storage_Count :=
implementation-defined;
subtype Buffer_Type
is
System.Storage_Elements.Storage_Array(1..Buffer_Size);
-- Input and output operations
procedure Read (Buffer :
in Buffer_Type; Item :
out Element_Type);
procedure Write(Buffer :
out Buffer_Type; Item :
in Element_Type);
-- Exceptions
Data_Error :
exception renames IO_Exceptions.Data_Error;
end Ada.Storage_IO;
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.
NOTE 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.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe