A.9 The Generic Package Storage_IO
This Reference Manual output has not been verified, and may contain omissions or errors. Report any problems on the tracking issue
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.
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 4Buffer_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 6procedure Read (Buffer : in Buffer_Type; Item : out Element_Type); 7procedure Write(Buffer : out Buffer_Type; Item : in Element_Type); 8-- Exceptions 9Data_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.
unknown_discriminant_partso that there is a well-defined upper bound on the size of the buffer needed to hold the content of an object of the formal subtype (i.e. Buffer_Size). If there are no implicit levels of indirection, Buffer_Size will typically equal:
(Element_Type'Size + System.Storage_Unit - 1) / System.Storage_Unit