generic -- specification
type
element is private;
package
queuesgeneric is
-- type
definition
type queue (capacity: positive) is limited
private;
--
exported exceptions
QueueFull : exception;
QueueEmpty : exception;
--
constructors
procedure MakeEmpty (Q : in out queue);
-- pre: Q is defined
-- post:
Q is empty
procedure Enqueue (Q: in out Queue; E : in element);
-- pre:
Q and E are defined
-- post:
Q is returned with E as the top element
-- raises: QueueFull if Q already contains
Capacity Elements
procedure dequeue (Q: in out Queue);
-- pre:
Q is defined
-- post:
Q is returned with the top Element discarded
-- raises QueueEmpty if Q contains no elemelnts
--
selector
function first (Q : in Queue) return
Element;
-- pre:
Q is defined
-- post:
The first element of Q is returned
-- raises:
QueueEmpty if Q contains no elements
--
inquiry operations
Function isEmpty (Q : in Queue) return
Boolean;
-- pre:
Q is defined
-- post:
returns True if Q is empty, False otherwise
Function isFull (Q: in Queue) return boolean;
-- pre:
Q is defined
-- post:
returns True if Q is full, False otherwise
Private
Type List is Array (positive Range
<> ) of element;
Type Queue (Capacity : positive) is record
tail : natural := 0;
store : List (1..Capacity);
End record;
End
QueuesGeneric;