home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / QUEUE.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  2KB  |  64 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. +----------------------------------------------------+
  5. |               Thunderbird Software                 |
  6. +----------------------------------------------------+
  7. | Filespec  :  Queue.c                               |
  8. | Date      :  September 29, 1994                    |
  9. | Time      :  10:16AM                               |
  10. | Revision  :  1.0                                   |
  11. +----------------------------------------------------+
  12. | Programmer:  Scott Andrews                         |
  13. | Address   :  5358 Summit RD SW                     |
  14. | City/State:  Pataskala, Ohio                       |
  15. | Zip       :  43062                                 |
  16. +----------------------------------------------------+
  17. | Released to the Public Domain                      |
  18. +----------------------------------------------------+
  19. */
  20.  
  21. #include <stdlib.h>
  22.  
  23. #include "queue.h"
  24.  
  25. QUEUE *alloc_queue( int size)
  26. { QUEUE *retval;
  27.   retval = (QUEUE *) malloc( sizeof( QUEUE) + (size_t) size);
  28.   if ( (QUEUE *) 0 != retval)
  29.   {  retval->size = size;
  30.      retval->head = 0;
  31.      retval->tail = 0;
  32.      retval->avail = size;
  33.      retval->buffer = ( (char *) retval) + sizeof( QUEUE);
  34.   }
  35.   return retval;
  36. }
  37.  
  38. int en_queue( QUEUE *queue, char data)
  39. { int retval = -1;
  40.   if ( 0 != queue->avail)
  41.   {  *( queue->buffer + queue->head) = data;
  42.      queue->head += 1;
  43.      if ( queue->head == queue->size)
  44.         queue->head = 0;
  45.      queue->avail -= 1;
  46.      retval = queue->avail;
  47.   }
  48.   return retval;
  49. }
  50.  
  51. int de_queue( QUEUE *queue)
  52. { int retval = -1;
  53.   if ( queue->avail != queue->size)
  54.   {  retval = *( queue->buffer + queue->tail);
  55.      queue->tail += 1;
  56.      if ( queue->tail == queue->size)
  57.         queue->tail = 0;
  58.      queue->avail += 1;
  59.   }
  60.   return retval;
  61. }
  62.  
  63. /* End of Queue.c */
  64.