Ada Reference Manual (Ada 2022 Draft 34)Legal Information
Contents   Index   References   Search   Previous   Next 

A.18.27 The Generic Package Containers.Synchronized_Queue_Interfaces

1/3
The language-defined generic package Containers.Synchronized_Queue_Interfaces provides interface type Queue, and a set of operations for that type. Interface Queue specifies a first-in, first-out queue. 

Static Semantics

2/3
The generic library package Containers.Synchronized_Queue_Interfaces has the following declaration:
3/5
generic
   type Element_Type is private;
package Ada.Containers.Synchronized_Queue_Interfaces
   with Pure, Nonblocking, Global => null is
4/3
   type Queue is synchronized interface;
5/5
   procedure Enqueue
     (Container : in out Queue;
      New_Item  : in     Element_Type) is abstract
       with Synchronization => By_Entry,
           Nonblocking => False,
           Global'Class=> in out synchronized;
6/5
   procedure Dequeue
     (Container : in out Queue;
      Element   :    out Element_Type) is abstract
       with Synchronization => By_Entry,
           Nonblocking => False,
           Global'Class=> in out synchronized;
7/5
   function Current_Use (Container : Queue) return Count_Type is abstract
       with Nonblocking, Global'Class => null, Use_Formal => null;
   function Peak_Use (Container : Queue) return Count_Type is abstract
       with Nonblocking, Global'Class => null, Use_Formal => null,
            Post'Class => Peak_Use'Result >= Current_Use (Container);
8/3
end Ada.Containers.Synchronized_Queue_Interfaces;
8.1/5
 The subprogram behavior descriptions given below are the semantics for the corresponding callable entities found in the language-defined generic packages that have a formal package named Queue_Interfaces.
9/5
procedure Enqueue
  (Container : in out Queue;
   New_Item  : in     Element_Type) is abstract
   with Synchronization => By_Entry
        Nonblocking => False,
        Global'Class=> in out synchronized;
10/3
A queue type that implements this interface is allowed to have a bounded capacity. If the queue object has a bounded capacity, and the number of existing elements equals the capacity, then Enqueue blocks until storage becomes available; otherwise, Enqueue does not block. In any case, it then copies New_Item onto the queue.
11/5
procedure Dequeue
  (Container : in out Queue;
   Element   :    out Element_Type) is abstract
   with Synchronization => By_Entry
        Nonblocking => False,
        Global'Class=> in out synchronized;
12/3
If the queue is empty, then Dequeue blocks until an item becomes available. In any case, it then assigns the element at the head of the queue to Element, and removes it from the queue.
13/5
function Current_Use (Container : Queue) return Count_Type is abstract
   with Nonblocking, Global'Class=> null, Use_Formal => null;
14/3
Returns the number of elements currently in the queue.
15/5
function Peak_Use (Container : Queue) return Count_Type is abstract
   with Nonblocking, Global'Class=> null, Use_Formal => null,
         Post'Class => Peak_Use'Result >= Current_Use (Container);
16/3
Returns the maximum number of elements that have been in the queue at any one time.
17/3
NOTE   Unlike other language-defined containers, there are no queues whose element types are indefinite. Elements of an indefinite type can be handled by defining the element of the queue to be a holder container (see A.18.18) of the indefinite type, or to be an explicit access type that designates the indefinite type.

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