Spec-Zone.ru › Ada 2012
Справочное руководство Ada 2012

13.13.1 Пакет Streams

Статическая семантика

Абстрактный тип Root_Stream_Type является корневым типом класса типов потоков. Типы в этом классе представляют различные виды потоков. Новый тип потока определяется путем расширения корневого типа (или другого типа потока), переопределения операций Read и Write и, по желанию, определения дополнительных примитивных подпрограмм в соответствии с требованиями конкретного вида потока. Предопределенные атрибуты, ориентированные на потоки, такие как T'Read и T'Write, вызывают процедуры Read и Write типа Root_Stream_Type. (Пользовательские атрибуты T'Read и T'Write также могут вызывать такие вызовы или вызывать атрибуты Read и Write других типов.)
package Ada.Streams is
pragma Pure(Streams);
type Root_Stream_Type is abstract tagged limited private;
pragma Preelaborable_Initialization(Root_Stream_Type);
type Stream_Element is mod определяется реализацией;
type Stream_Element_Offset is range определяется реализацией;
subtype Stream_Element_Count is
Stream_Element_Offset range 0..Stream_Element_Offset'Last;
type Stream_Element_Array is
array(Stream_Element_Offset range <>) of aliased Stream_Element;
procedure Read(
Stream : in out Root_Stream_Type;
Item : out Stream_Element_Array;
Last : out Stream_Element_Offset) is abstract;
procedure Write(
Stream : in out Root_Stream_Type;
Item : in Stream_Element_Array) is abstract;
private
... -- не задается языком
end Ada.Streams;
Операция Read передает элементы потока из указанного потока, чтобы заполнить массив Item. Элементы передаются до тех пор, пока не будет передано Item'Length элементов или пока не будет достигнут конец потока. Если какие-либо элементы были переданы, индекс последнего переданного элемента потока возвращается в Last. В противном случае, Item'First - 1 возвращается в Last. Last меньше, чем Item'Last только в том случае, если достигнут конец потока.
Операция Write добавляет Item к указанному потоку.

Разрешения реализации

Если Stream_Element'Size не является кратным System.Storage_Unit, то компоненты Stream_Element_Array не обязательно должны быть алиасами.
ПРИМЕЧАНИЯ
38 См. A.12.1, «Пакет Streams.Stream_IO» для примера расширения типа Root_Stream_Type.
39 Если достигнут конец потока и Item'First равен Stream_Element_Offset'First, Read вызовет исключение Constraint_Error.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API