Spec-Zone.ru › Ada 95
Справочник по Ada 95

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;
type Stream_Element is mod implementation-defined;
type Stream_Element_Offset is range implementation-defined;
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'Length элементов потока из указанного потока, чтобы заполнить массив Item. Индекс последнего переданного элемента потока возвращается в Last. Last меньше Item'Last только в том случае, если достигнут конец потока.
Операция Write добавляет Item к указанному потоку.

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

Если Stream_Element'Size не является кратным System.Storage_Unit, то компоненты Stream_Element_Array не обязательно должны быть алиасами.
ПРИМЕЧАНИЯ
30 См. A.12.1, ``Пакет Streams.Stream_IO'' для примера расширения типа Root_Stream_Type.


Spec-Zone.ru

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