Actual source code: queue.h

  1: /*$Id: queue.h,v 1.2 2001/04/10 19:37:38 bsmith Exp $*/
  2: /**********************************queue.h*************************************
  3: SPARSE GATHER-SCATTER PACKAGE: bss_malloc bss_malloc ivec error comm gs queue

  5: Author: Henry M. Tufo III

  7: e-mail: hmt@cs.brown.edu

  9: snail-mail:
 10: Division of Applied Mathematics
 11: Brown University
 12: Providence, RI 02912

 14: Last Modification: 
 15: 6.21.97
 16: **********************************queue.h*************************************/

 18: /**********************************queue.h*************************************
 19: File Description:
 20: -----------------
 21:   This file provides an interface to a simple queue abstraction.
 22: **********************************queue.h*************************************/
 23: #ifndef _queue_h
 24: #define _queue_h


 27: /**********************************queue.h*************************************
 28: Type: queue_ADT
 29: ---------------
 30:   This line defines the abstract queue type as a pointer to
 31:   its concrete counterpart.  Clients have no access to the
 32:   underlying representation.
 33: **********************************queue.h*************************************/
 34: typedef struct queue_CDT *queue_ADT;



 38: /**********************************queue.h*************************************
 39: Function: new_queue()

 41: Input : na
 42: Output: na
 43: Return: pointer to ADT.
 44: Description: This function allocates and returns an empty queue.
 45: Usage: queue = new_queue();
 46: **********************************queue.h*************************************/
 47: extern queue_ADT new_queue(void);



 51: /**********************************queue.h*************************************
 52: Function: free_queue()

 54: Input : pointer to ADT.
 55: Output: na
 56: Return: na
 57: Description: This function frees the storage associated with queue but not any
 58: pointer contained w/in.
 59: Usage: free_queue(queue);
 60: **********************************queue.h*************************************/
 61: extern void free_queue(queue_ADT queue);



 65: /**********************************queue.h*************************************
 66: Function: enqueue()

 68: Input : pointer to ADT and pointer to object
 69: Output: na
 70: Return: na
 71: Description: This function adds obj to the end of the queue.
 72: Usage: enqueue(queue, obj);
 73: **********************************queue.h*************************************/
 74: extern void enqueue(queue_ADT queue, void *obj);



 78: /**********************************queue.h*************************************
 79: Function: dequeue()  

 81: Input : pointer to ADT
 82: Output: na 
 83: Return: void * to element
 84: Description: This function removes the data value at the head of the queue
 85: and returns it to the client.  dequeueing an empty queue is an error
 86: Usage: obj = dequeue(queue);
 87: **********************************queue.h*************************************/
 88: extern void *dequeue(queue_ADT queue);



 92: /**********************************queue.h*************************************
 93: Function: len_queue()

 95: Input : pointer to ADT
 96: Output: na
 97: Return: integer number of elements
 98: Description: This function returns the number of elements in the queue.
 99: Usage: n = len_queue(queue);
100: **********************************queue.h*************************************/
101: extern int len_queue(queue_ADT queue);



105: #endif