Руководство по Ada (Ada 2022)
A.18.12 Универсальный пакет Containers.Indefinite_Doubly_Linked_Lists
Определяемый языком универсальный пакет Containers.Indefinite_Doubly_Linked_Lists предоставляет закрытые типы List и Cursor, а также набор операций для каждого типа. Он предоставляет те же операции, что и пакет Containers.Doubly_Linked_Lists (см. A.18.3), с той разницей, что универсальный формальный параметр Element_Type является неопределенным.
Статическая семантика
Декларация универсального библиотечного пакета Containers.Indefinite_Doubly_Linked_Lists имеет то же содержимое и семантику, что и Containers.Doubly_Linked_Lists, за исключением:
- Универсальный формальный параметр Element_Type является неопределенным.
- Процедура с профилем:
procedure Insert (Container : in out List;
Before : in Cursor;
Position : out Cursor;
Count : in Count_Type := 1);
Before : in Cursor;
Position : out Cursor;
Count : in Count_Type := 1);
исключена.
- Фактический параметр Element для доступа к подпрограмме Process из Update_Element может быть ограничен, даже если Element_Type не ограничен.
- Операции Append, Insert, Prepend и Replace_Element, имеющие формальный параметр типа Element_Type, выполняют неопределённую вставку (см. A.18).
- Описание Tampering_With_Elements_Prohibited заменено на:
Возвращает True, если вмешательство в элементы запрещено для Container, и False в противном случае.
- Tampering_With_Cursors_Prohibited заменено на Tampering_With_Elements_Prohibited в постусловии для операций Reference и Constant_Reference.
- Операции Replace_Element и Swap исключены из вложенного пакета Stable.