File : queue_pack_concrete.adb
package body Queue_Pack_Concrete is
procedure Enqueue (Item: in Element; Queue: in out Real_Queue) is
begin
if Queue.State = Filled and Queue.Top = Queue.Free then
raise Queueoverflow;
end if;
Queue.Elements (Queue.Free) := Item;
Queue.Free := Queue.Free - 1;
Queue.State := Filled;
end Enqueue;
procedure Dequeue (Item: out Element; Queue: in out Real_Queue) is
begin
if Queue.State = Empty then
raise Queueunderflow;
end if;
Item := Queue.Elements (Queue.Top);
Queue.Top := Queue.Top - 1;
if Queue.Top = Queue.Free then Queue.State := Empty; end if;
end Dequeue;
end Queue_Pack_Concrete;