A.18.29 The Generic Package Containers.Bounded_Synchronized_Queues
Static Semantics
The language-defined generic package Containers.Bounded_Synchronized_Queues 
provides type Queue, which implements the interface type Containers.Synchronized_Queue_Interfaces.Queue.
with System;
with Ada.Containers.Synchronized_Queue_Interfaces;
generic
   with package Queue_Interfaces 
is new Ada.Containers.Synchronized_Queue_Interfaces (<>);
   Default_Capacity : Count_Type;
   Default_Ceiling  : System.Any_Priority := System.Priority'Last;
package Ada.Containers.Bounded_Synchronized_Queues 
is
   pragma Preelaborate(Bounded_Synchronized_Queues);
 
   package Implementation is
      ... -- not specified by the language
   end Implementation;
   protected type Queue
        (Capacity : Count_Type := Default_Capacity;
         Ceiling  : System.Any_Priority := Default_Ceiling)
           
with Priority => Ceiling 
is
        new Queue_Interfaces.Queue 
with 
      overriding
      entry Enqueue (New_Item : 
in Queue_Interfaces.Element_Type);
      
overriding
      entry Dequeue (Element : 
out Queue_Interfaces.Element_Type);
 
      overriding
      function Current_Use 
return Count_Type;
      
overriding
      function Peak_Use 
return Count_Type;
 
   private
      ... -- not specified by the language
   end Queue;
private
   ... -- not specified by the language
end Ada.Containers.Bounded_Synchronized_Queues;
 The semantics are 
the same as for Unbounded_Synchronized_Queues, except:
The capacity for instances of type Queue is bounded 
and specified by the discriminant Capacity. 
Implementation Advice
 Bounded queue objects should be implemented without 
implicit pointers or dynamic allocation. 
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe