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

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

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

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

Декларация обобщённого библиотечного пакета Containers.Bounded_Vectors имеет то же содержимое и семантику, что и Containers.Vectors, за исключением:
  • Предикат pragma Preelaborate заменяется на pragma Pure.
  • Тип Vector объявляется с дискриминантом, который определяет ёмкость:
type Vector (Capacity : Count_Type) is tagged private;
  • Тип Vector требует финализации тогда и только тогда, когда тип Element_Type требует финализации.
  • В функции Copy, если параметр Capacity равен или больше длины Source, ёмкость вектора точно равна значению параметра Capacity.
  • Описание Reserve_Capacity заменяется на:
Если указанная Capacity больше ёмкости Container, то Reserve_Capacity генерирует Capacity_Error. В противном случае операция не имеет эффекта.

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

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

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

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

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

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

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

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


Spec-Zone.ru

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