File : queue_pack_exceptions.adb
package body Queue_Pack_Exceptions is
procedure Enqueue (Item: in Element; Queue: in out Queue_Type) is
begin
if Queue.State = Filled and Queue.Top = Queue.Free then
raise Queueoverflow;
end if;
Queue.Elements (Queue.Free) := Item;
Queue.Free := Marker'Pred (Queue.Free);
Queue.State := Filled;
end Enqueue;
procedure Dequeue (Item: out Element; Queue: in out Queue_Type) is
begin
if Queue.State = Empty then
raise Queueunderflow;
end if;
Item := Queue.Elements (Queue.Top);
Queue.Top := Marker'Pred (Queue.Top);
if Queue.Top = Queue.Free then Queue.State := Empty; end if;
end Dequeue;
end Queue_Pack_Exceptions;