File : queue_pack_concrete.ads
with Queue_Pack_Abstract; use Queue_Pack_Abstract;
package Queue_Pack_Concrete is
QueueSize : constant Integer := 10;
type Real_Queue is new Queue_Type with private;
procedure Enqueue (Item: in Element; Queue: in out Real_Queue);
procedure Dequeue (Item: out Element; Queue: in out Real_Queue);
Queueoverflow, Queueunderflow : exception;
private
type Marker is mod QueueSize;
type List is array (Marker'Range) of Element;
type Queue_State is (Empty, Filled);
type Real_Queue is new Queue_Type with record
Top, Free : Marker := Marker'First;
State : Queue_State := Empty;
Elements : List;
end record;
end Queue_Pack_Concrete;