Annotation of previous_trunk/src/includes/queue.h, revision 1.1.1.1

1.1       root        1: /*  
                      2:  *          File: queue.h
                      3:  *        Author: Robert I. Pitts <[email protected]>
                      4:  * Last Modified: March 9, 2000
                      5:  *         Topic: Queue - Array Implementation
                      6:  * ----------------------------------------------------------------
                      7:  */
                      8: 
                      9: #ifndef _QUEUE_H
                     10: #define _QUEUE_H
                     11: 
                     12: /*
                     13:  * Constants
                     14:  * ---------
                     15:  * ERROR_*   These signal error conditions in queue functions
                     16:  *           and are used as exit codes for the program.
                     17:  */
                     18: #define ERROR_QUEUE   2
                     19: #define ERROR_MEMORY  3
                     20: 
                     21: /*
                     22:  * Type: queueElementT
                     23:  * -------------------
                     24:  * This is the type of objects held in the queue.
                     25:  */
                     26: 
                     27: /*typedef char queueElementT;
                     28: typedef unsigned char *queueElementT;
                     29: */
                     30: 
                     31: struct queuepacket {
                     32:         int len;
                     33:         unsigned char data[4096];
                     34: };
                     35: typedef struct queuepacket *queueElementT;
                     36: 
                     37: /*
                     38:  * Type: queueADT
                     39:  * --------------
                     40:  * The actual implementation of a queue is completely
                     41:  * hidden.  Client will work with queueADT which is a
                     42:  * pointer to underlying queueCDT.
                     43:  */
                     44: 
                     45: /*
                     46:  * NOTE: need word struct below so that the compiler
                     47:  * knows at least that a queueCDT will be some sort
                     48:  * of struct.
                     49:  */
                     50: 
                     51: typedef struct queueCDT *queueADT;     
                     52: 
                     53: /*
                     54:  * Function: QueueCreate
                     55:  * Usage: queue = QueueCreate();
                     56:  * -------------------------
                     57:  * A new empty queue is created and returned.
                     58:  */
                     59: 
                     60: queueADT QueueCreate(void);
                     61: 
                     62: /* Function: QueueDestroy
                     63:  * Usage: QueueDestroy(queue);
                     64:  * -----------------------
                     65:  * This function frees all memory associated with
                     66:  * the queue.  "queue" may not be used again unless
                     67:  * queue = QueueCreate() is called first.
                     68:  */
                     69: 
                     70: void QueueDestroy(queueADT queue);
                     71: 
                     72: /*
                     73:  * Functions: QueueEnter, QueueDelete
                     74:  * Usage: QueueEnter(queue, element);
                     75:  *        element = QueueDelete(queue);
                     76:  * --------------------------------------------
                     77:  * These are the fundamental queue operations that enter
                     78:  * elements in and delete elements from the queue.  A call
                     79:  * to QueueDelete() on an empty queue or to QueueEnter()
                     80:  * on a full queue is an error.  Make use of QueueIsFull()
                     81:  * and QueueIsEmpty() (see below) to avoid these errors.
                     82:  */
                     83: 
                     84: void QueueEnter(queueADT queue, queueElementT element);
                     85: queueElementT QueueDelete(queueADT queue);
                     86: 
                     87: 
                     88: /*
                     89:  * Functions: QueueIsEmpty, QueueIsFull
                     90:  * Usage: if (QueueIsEmpty(queue)) ...
                     91:  * -----------------------------------
                     92:  * These return a true/false value based on whether
                     93:  * the queue is empty or full, respectively.
                     94:  */
                     95: 
                     96: int QueueIsEmpty(queueADT queue);
                     97: int QueueIsFull(queueADT queue);
                     98: 
                     99: 
                    100: /*
                    101:  * Function: QueuePeek
                    102:  * Usage: qeuesize = QueuePeek(queue) ...
                    103:  * -----------------------------------
                    104:  * This returns the number of elements currently
                    105:  * stored in the queue.
                    106:  */
                    107: int QueuePeek(queueADT queue);
                    108: 
                    109: #endif  /* not defined _QUEUE_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.