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

13.13.1 Пакет потоков

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

Абстрактный тип 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 не обязательно должны быть ссылающимися.
ПРИМЕЧАНИЯ
31 См. A.12.1, «Пакет Streams.Stream_IO» для примера расширения типа Root_Stream_Type.
32 Если достигнут конец потока, а Item'First равен Stream_Element_Offset'First, Read вызовет исключение Constraint_Error.


Spec-Zone.ru

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