-- File Queueg.ads -- This is a generic queue package, built on top of a generic list -- package (listg) that handles most of the pointer manipulation. -- It will later be used in a graph traversal program. with listg; generic type Element is private; package Queueg is type Queue is limited private; -- constructors procedure Copy (From: in Queue; To: in out Queue); procedure Clear (AQueue: in out Queue); procedure Add (Item: in Element; ToQueue: in out Queue); procedure Pop (AQueue: in out Queue); -- selectors function Equal (Left: in Queue; Right: in Queue) return Boolean; function Empty (AQueue: in Queue) return Boolean; function First (OfQueue: in Queue) return Element; -- datum of front of queue -- exceptions Underflow, Overflow: exception; private package AList is new Listg (Element); use AList; type Queue is record Front, Rear: List; end record; end Queueg;