Руководство по Ada (Ada 2022)
A.18.31 Универсальный пакет Containers.Bounded_Priority_Queues
Статическая семантика
Определённый языком универсальный пакет Containers.Bounded_Priority_Queues предоставляет тип Queue, который реализует интерфейсный тип Containers.Synchronized_Queue_Interfaces.Queue.
с System;
с Ada.Containers.Synchronized_Queue_Interfaces;
универсальный
с пакетом Queue_Interfaces есть
новый Ada.Containers.Synchronized_Queue_Interfaces (<>);
тип Queue_Priority является частным;
с функцией Get_Priority
(Element : Queue_Interfaces.Element_Type) возвращает Queue_Priority есть <>;
с функцией Before
(Left, Right : Queue_Priority) возвращает Boolean есть <>;
Default_Capacity : Count_Type;
Default_Ceiling : System.Any_Priority := System.Priority'Last;
пакет Ada.Containers.Bounded_Priority_Queues
с Preelaborate,
Nonblocking, Global => вход/выход синхронизированный есть
с Ada.Containers.Synchronized_Queue_Interfaces;
универсальный
с пакетом Queue_Interfaces есть
новый Ada.Containers.Synchronized_Queue_Interfaces (<>);
тип Queue_Priority является частным;
с функцией Get_Priority
(Element : Queue_Interfaces.Element_Type) возвращает Queue_Priority есть <>;
с функцией Before
(Left, Right : Queue_Priority) возвращает Boolean есть <>;
Default_Capacity : Count_Type;
Default_Ceiling : System.Any_Priority := System.Priority'Last;
пакет Ada.Containers.Bounded_Priority_Queues
с Preelaborate,
Nonblocking, Global => вход/выход синхронизированный есть
пакет Implementation есть
... -- не указано языком
конец Implementation;
... -- не указано языком
конец Implementation;
защищённый тип Queue
(Capacity : Count_Type := Default_Capacity;
Ceiling : System.Any_Priority := Default_Ceiling)
с Priority => Ceiling есть
новый Queue_Interfaces.Queue с
(Capacity : Count_Type := Default_Capacity;
Ceiling : System.Any_Priority := Default_Ceiling)
с Priority => Ceiling есть
новый Queue_Interfaces.Queue с
переопределяя
вход Enqueue (New_Item : вход Queue_Interfaces.Element_Type);
переопределяя
вход Dequeue (Element : выход Queue_Interfaces.Element_Type);
вход Enqueue (New_Item : вход Queue_Interfaces.Element_Type);
переопределяя
вход Dequeue (Element : выход Queue_Interfaces.Element_Type);
не переопределяя
процедура Dequeue_Only_High_Priority
(At_Least : вход Queue_Priority;
Element : вход/выход Queue_Interfaces.Element_Type;
Success : выход Boolean);
процедура Dequeue_Only_High_Priority
(At_Least : вход Queue_Priority;
Element : вход/выход Queue_Interfaces.Element_Type;
Success : выход Boolean);
переопределяя
функция Current_Use возвращает Count_Type
с Nonblocking, Global => null, Use_Formal => null;
переопределяя
функция Peak_Use возвращает Count_Type
с Nonblocking, Global => null, Use_Formal => null;
функция Current_Use возвращает Count_Type
с Nonblocking, Global => null, Use_Formal => null;
переопределяя
функция Peak_Use возвращает Count_Type
с Nonblocking, Global => null, Use_Formal => null;
частное
... -- не указано языком
конец Queue;
... -- не указано языком
конец Queue;
частное
... -- не указано языком
конец Ada.Containers.Bounded_Priority_Queues;
Семантика аналогична семантике Unbounded_Priority_Queues, за исключением:
- Емкость экземпляров типа Queue ограничена и задаётся дискриминантом Capacity.
Рекомендации по реализации
Объекты ограниченных очередей с приоритетами должны быть реализованы без неявных указателей или динамического выделения памяти.