Ada Conformity Assessment Authority      Home Conformity Assessment   Test Suite ARGAda Standard
 
Annotated Ada Reference Manual (Ada 202x Draft 22)Legal Information
Contents   Index   References   Search   Previous   Next 

A.18.31 The Generic Package Containers.Bounded_Priority_Queues

Static Semantics

1/3
{AI05-0159-1} The language-defined generic package Containers.Bounded_Priority_Queues provides type Queue, which implements the interface type Containers.Synchronized_Queue_Interfaces.Queue.
2/5
{AI12-0112-1} with System;
with Ada.Containers.Synchronized_Queue_Interfaces;
generic
   with package Queue_Interfaces is new Ada.Containers.Synchronized_Queue_Interfaces (<>);
   type Queue_Priority is private;
   with function Get_Priority
     (Element : Queue_Interfaces.Element_Type) return Queue_Priority is <>;
   with function Before
     (Left, Right : Queue_Priority) return Boolean is <>;
   Default_Capacity : Count_Type;
   Default_Ceiling  : System.Any_Priority := System.Priority'Last;
package Ada.Containers.Bounded_Priority_Queues is
   with Preelaborate,
        Nonblocking => Queue_Interfaces'Nonblocking and
                       Queue_Priority'Nonblocking and
                       Get_Priority'Nonblocking and Before'Nonblocking,
        Global => synchronized in out Ada.Containers.Bounded_Priority_Queues &
                  Queue_Interfaces'Global & Queue_Priority'Global &
                  Get_Priority'Global & Before'Global is

   pragma Preelaborate(Bounded_Priority_Queues);
3/3
   package Implementation is
      ... -- not specified by the language
   end Implementation;
4/3
   protected type Queue
        (Capacity : Count_Type := Default_Capacity;
         Ceiling  : System.Any_Priority := Default_Ceiling)
           with Priority => Ceiling is
      new Queue_Interfaces.Queue with
5/3
      overriding
      entry Enqueue (New_Item : in Queue_Interfaces.Element_Type);
      overriding
      entry Dequeue (Element : out Queue_Interfaces.Element_Type);
6/3
{AI05-0159-1} {AI05-0251-1}       not overriding
      procedure Dequeue_Only_High_Priority
        (At_Least : in     Queue_Priority;
         Element  : in out Queue_Interfaces.Element_Type;
         Success  :    out Boolean);
7/5
{AI12-0112-1}       overriding
      function Current_Use return Count_Type
         with Global => null
;
      overriding
      function Peak_Use return Count_Type
         with Global => null
;
8/3
   private
      ... -- not specified by the language
   end Queue;
9/3
private
10/3
   ... -- not specified by the language
11/3
end Ada.Containers.Bounded_Priority_Queues;
12/3
{AI05-0159-1} The semantics are the same as for Unbounded_Priority_Queues, except:
13/3
The capacity for instances of type Queue is bounded and specified by the discriminant Capacity. 
13.a/3
Ramification: Since this type has a bounded capacity, Enqueue might block if the queue is full. 

Implementation Advice

14/3
{AI05-0159-1} Bounded priority queue objects should be implemented without implicit pointers or dynamic allocation. 
14.a.1/3
Implementation Advice: Bounded priority queue objects should be implemented without implicit pointers or dynamic allocation.

Extensions to Ada 2005

14.a/3
{AI05-0159-1} {AI05-0251-1} The generic package Containers.Bounded_Priority_Queues is new. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe