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

A.18.24 Обобщённый пакет Containers.Bounded_Ordered_Sets

Определяемый языком обобщённый пакет Containers.Bounded_Ordered_Sets предоставляет приватный тип Set и набор операций. Он предоставляет те же операции, что и пакет Containers.Ordered_Sets (см. A.18.9), с разницей, что максимальный объём памяти ограничен.

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

Декларация обобщённого библиотечного пакета Containers.Bounded_Ordered_Sets имеет то же содержимое и семантику, что и Containers.Ordered_Sets за исключением:
  • Предикат pragma Preelaborate заменён на pragma Pure.
  • Тип Set объявлен с дискриминантом, определяющим ёмкость (максимальное количество элементов) следующим образом:
type Set (Capacity : Count_Type) is tagged private;
  • Тип Set нуждается в завершении, если и только если тип Element_Type нуждается в завершении.
  • Если Insert (или Include) добавляет элемент, выполняется проверка, не превышена ли ёмкость, и если проверка терпит неудачу, возникает ошибка Capacity_Error.
  • В процедуре Assign, если длина Source больше, чем ёмкость Target, то ошибка Capacity_Error передаётся.
  • Функция Copy заменена на:
function Copy (Source : Set;
Capacity : Count_Type := 0) return Set;
Возвращает множество, элементы которого инициализированы значениями из Source. Если Capacity равно 0, то ёмкость множества равна длине Source; если Capacity равно или больше длины Source, то ёмкость множества равна заданному значению; в противном случае выполняется распространение ошибки Capacity_Error.

Ограниченные (временные) ошибки

Ошибка присваивания из объекта ограниченного множества, когда запрещено изменение элементов или курсоров этого объекта, является ограниченной ошибкой. Либо возникает ошибка Program_Error, либо выполнение продолжается с объектом-получателем, запрещающим изменение элементов или курсоров, либо выполнение продолжается нормально.

Ошибочное выполнение

Когда объект ограниченного множества S завершает свою работу, если вмешательство в курсоры запрещено для S иначе, чем из-за присваивания от другого множества, то выполнение является ошибочным.

Требования к реализации

Для каждого экземпляра Containers.Ordered_Sets и каждого экземпляра Containers.Bounded_Ordered_Sets, если два экземпляра удовлетворяют следующим условиям, то вывод, генерируемый подпрограммами Set'Output или Set'Write любого экземпляра, должен быть читаем подпрограммами Set'Input или Set'Read соответственно другого экземпляра:
  • параметры Element_Type двух экземпляров являются статически соответствующими подтипами одного и того же типа; и
  • вывод, генерируемый Element_Type'Output или Element_Type'Write, должен быть читаем Element_Type'Input или Element_Type'Read соответственно (где Element_Type обозначает тип двух фактических параметров Element_Type).

Рекомендации по реализации

Объекты ограниченных упорядоченных множеств должны реализовываться без неявных указателей или динамического выделения.
Рекомендация по реализации процедуры Move для минимизации копирования не применяется.


Spec-Zone.ru

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