1. -- 
  2. -- Uwe R. Zimmer, Australia, 2013 
  3. -- 
  4.  
  5. package body Queue_Pack_Contract is 
  6.  
  7.    procedure Enqueue (Item : Element; Q : in out Queue_Type) is 
  8.  
  9.    begin 
  10.       Q.Elements (Q.Free) := Item; 
  11.       Q.Free              := Q.Free + 1; 
  12.       Q.Is_Empty          := False; 
  13.    end Enqueue; 
  14.  
  15.    procedure Dequeue (Item : out Element; Q : in out Queue_Type) is 
  16.  
  17.    begin 
  18.       Item       := Q.Elements (Q.Top); 
  19.       Q.Top      := Q.Top + 1; 
  20.       Q.Is_Empty := Q.Top = Q.Free; 
  21.    end Dequeue; 
  22.  
  23. end Queue_Pack_Contract;