/* +----------------------------------------------------+ | Thunderbird Software | +----------------------------------------------------+ | Filespec : Queue.c | | Date : September 29, 1994 | | Time : 10:16AM | | Revision : 1.0 | +----------------------------------------------------+ | Programmer: Scott Andrews | | Address : 5358 Summit RD SW | | City/State: Pataskala, Ohio | | Zip : 43062 | +----------------------------------------------------+ | Released to the Public Domain | +----------------------------------------------------+ */ #include #include "queue.h" QUEUE *alloc_queue( int size) { QUEUE *retval; retval = (QUEUE *) malloc(sizeof(QUEUE) + (size_t) size); if ((QUEUE *) 0 != retval) { retval->size = size; retval->head = 0; retval->tail = 0; retval->avail = size; retval->buffer = ((char *) retval) + sizeof(QUEUE); } return retval; } int en_queue( QUEUE * queue, char data) { int retval = -1; if (0 != queue->avail) { *(queue->buffer + queue->head) = data; queue->head += 1; if (queue->head == queue->size) queue->head = 0; queue->avail -= 1; retval = queue->avail; } return retval; } int de_queue( QUEUE * queue) { int retval = -1; if (queue->avail != queue->size) { retval = *(queue->buffer + queue->tail); queue->tail += 1; if (queue->tail == queue->size) queue->tail = 0; queue->avail += 1; } return retval; } /* End of Queue.c */