home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TOOL_INC.ZIP / QUELIB.INC < prev    next >
Encoding:
Text File  |  1988-01-29  |  1.1 KB  |  77 lines

  1.  
  2. (*
  3.  * quelib.inc - Circular Queue library
  4.  *
  5.  * (C) 1987 Samuel H. Smith, 30-May-87 (rev. 13-Dec-87)
  6.  *
  7.  *)
  8.  
  9.  
  10. (*
  11.  * INIT_QUE(queue)
  12.  *
  13.  *)
  14.  
  15. procedure init_que( var q: queue_rec);
  16. begin
  17.    q.next_in := 1;
  18.    q.next_out := 1;
  19.    q.count := 0;
  20. end;
  21.  
  22.  
  23. (*
  24.  * EMPTY_QUE(queue): boolean
  25.  *
  26.  *)
  27.  
  28. function empty_que( var q: queue_rec ): boolean;
  29. begin
  30.    empty_que := q.count = 0;
  31. end;
  32.  
  33.  
  34. (*
  35.  * QUE_FREE(queue): integer
  36.  *
  37.  *)
  38.  
  39. function que_free (var q: queue_rec): integer;
  40. begin
  41.    que_free := queue_size - q.count;
  42. end;
  43.  
  44.  
  45. (*
  46.  * ENQUE(queue, char)
  47.  *
  48.  *)
  49.  
  50. procedure enque (var q: queue_rec; c: char);
  51. begin
  52.    inc(q.count);
  53.    q.data[q.next_in] := c;
  54.    if q.next_in < queue_size then
  55.       inc(q.next_in)
  56.    else
  57.       q.next_in := 1;
  58. end;
  59.  
  60.  
  61. (*
  62.  * DEQUE(queue,dest)
  63.  *    (EMPTY_QUE check is required before calling DEQUE)
  64.  *
  65.  *)
  66.  
  67. procedure deque (var q: queue_rec; var c: char);
  68. begin
  69.    c := q.data[q.next_out];
  70.    if q.next_out < queue_size then
  71.       inc(q.next_out)
  72.    else
  73.       q.next_out := 1;
  74.    dec(q.count);
  75. end;
  76.  
  77.