1. -- 
  2. -- Uwe R. Zimmer, Australia, 2013 
  3. -- 
  4.  
  5. package Queue_Pack_Object_Base is 
  6.  
  7.    Queue_Size : constant Positive := 10; 
  8.    type Element is new Positive range 1 .. 1000; 
  9.    type Marker is mod Queue_Size; 
  10.    type List is array (Marker) of Element; 
  11.    type Queue_Type is tagged record 
  12.       Top, Free : Marker  := Marker'First; 
  13.       Is_Empty  : Boolean := True; 
  14.       Elements  : List; 
  15.    end record; 
  16.  
  17.    procedure Enqueue (Item :     Element; Queue : in out Queue_Type); 
  18.    procedure Dequeue (Item : out Element; Queue : in out Queue_Type); 
  19.  
  20.    function Is_Empty (Queue : Queue_Type) return Boolean; 
  21.    function Is_Full  (Queue : Queue_Type) return Boolean; 
  22.  
  23.    Queue_overflow, Queue_underflow : exception; 
  24.  
  25. end Queue_Pack_Object_Base;