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

A.18.22 Универсальный пакет Containers.Bounded_Ordered_Maps

Определяемый языком универсальный пакет Containers.Bounded_Ordered_Maps предоставляет приватный тип Map и набор операций. Он предоставляет те же операции, что и пакет Containers.Ordered_Maps (см. A.18.6), с той разницей, что максимальный объём хранилища ограничен.

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

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

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

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

Ошибка выполнения

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

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

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

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

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


Spec-Zone.ru

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