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 
is
   pragma Preelaborate(Storage_IO);
 
   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.
 
26  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