Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

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

Определяемый языком обобщённый пакет Containers.Bounded_Indefinite_Holders предоставляет частный тип Holder и набор операций для этого типа. Он предоставляет те же операции, что и пакет Containers.Indefinite_Holders (см. A.18.18), с той разницей, что максимальный объём хранилища ограничен.

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

Декларация обобщённого библиотечного пакета Containers.Bounded_Indefinite_Holders имеет то же содержимое и семантику, что и Containers.Indefinite_Holders, за исключением:
  • В раздел контекста добавлено следующее:
with System.Storage_Elements; use System.Storage_Elements;
  • После параметра Element_Type следует дополнительный обобщённый параметр:
Max_Element_Size_in_Storage_Elements : Storage_Count;
  • Определение aspect_definition для Preelaborable_Initialization для типа Holder изменено на:
Preelaborable_Initialization =>
Element_Type'Preelaborable_Initialization
  • Добавить в предварительное условие To_Holder и Replace_Element:
and then (New_Item'Size <=
Max_Element_Size_in_Storage_Elements * System.Storage_Unit
or else raise Program_Error)

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

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

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

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

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

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


Spec-Zone.ru

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