Introducing Queue_Template
from Team 4 Enterprises
Team Four's Queue_Template is an Ada 95 generic queue package which implements various queue types and procedures, including:
A generic queue type (Queue_Type)
A procedure to create and add nodes to a FIFO
queue (Enqueue)
A procedure to create and add nodes to a priority queue (Priority_Enqueue)
A procedure to extract an item from a queue (Dequeue)
A procedure to change the maximum number of items the queue may
contain (Resize)
A function to indicate the number of items in the
queue (Items_In)
A function to indicate the maximum number of items the queue may
contain (Size_Of)
A function to indicate a queue is full (Is_Full)
A function to indicate a queue is empty (Is_Empty)
An exception indicating that the queue is empty (Empty_Queue_Error)
An exception indicating that the queue is full (Full_Queue_Error)
An exception occurring if a queue is resized below its current
size (Resize_Queue_Error)
To employ this package, the user must take the
following actions:
"With" the package
Make it a procedure or set it up for use:
"New" the package
Indicate the type of parameters
"Use" the "newed" generic
Example of these actions are demonstrated below.
"With" the package
with Queue_Template;
Make it a procedure or set it up for use:
procedure IQ_Dvr is
"New" the package and indicate the type of parameters
package integer_Queue
is new Queue_Template( Component_Type => integer);
"Use" the "newed" generic
use integer_Queue;
The non-private part of the specification is reproduced below.
generic type Component_Type is private; package Queue_Template is type Queue_Type is limited private; type Priority_Type is range 1 .. 10; Empty_Queue_Error : exception; Full_Queue_Error : exception; Resize_Queue_Error : exception; function Size_Of (Queue : Queue_Type) return Integer; function Items_In (Queue : Queue_Type) return Integer; function Is_Full (Queue : Queue_Type) return Boolean; function Is_Empty (Queue : Queue_Type) return Boolean; procedure Resize (Queue : in out Queue_Type; New_Size : in Integer); procedure Enqueue (Item : in Component_Type; Queue : in out Queue_Type); procedure Dequeue (Item : out Component_Type; Queue : in out Queue_Type); procedure Priority_Enqueue (Item_Value : in Component_Type; Item_Priority : in Priority_Type; Queue : in out Queue_Type);
If you wish to test the our package, the following files are available:
Generic Queue Template GenericQ.ada
Integer Priority Queue Demonstration IntQ.ada
Message (string) Priority Queue Demonstration StrQ.ada
Queue_Template was developed by:
Mark A. Crouch
Daniel R. Harris
Robert Kemper
Robert J. Waldt