package Streams.Buffers is
type Buffer_Stream is new Root_Stream_Type with private;
type A_Buffer_Stream is access all Buffer_Stream'Class;
procedure Open_Stream( buffer : in out A_SEA; stream : out A_Buffer_Stream );
pragma Precondition( buffer /= null );
pragma Postcondition( buffer = null );
pragma Postcondition( stream /= null );
function Stream( buffer : not null A_SEA ) return A_Buffer_Stream;
pragma Postcondition( Stream'Result /= null );
procedure Close( stream : in out A_Buffer_Stream );
pragma Postcondition( stream = null );
private
type Buffer_Stream is new Root_Stream_Type with record
buffer : A_SEA := null;
freeBuf : Boolean := False;
readPos : Stream_Element_Offset;
end record;
procedure Read( stream : in out Buffer_Stream;
item : out Stream_Element_Array;
last : out Stream_Element_Offset );
procedure Write( stream : in out Buffer_Stream;
item : Stream_Element_Array );
end Streams.Buffers;