The LevAWC Project
 All Data Structures Files Functions Variables Typedefs Enumerations Macros Pages
queue.c
Go to the documentation of this file.
1 /*
2  * _____
3  * ANSI / ___/
4  * / /__
5  * \___/
6  *
7  * Filename: queue.c
8  * Author : Kyle Loudon/Dan Levin
9  * Date : Fri Mar 22 12:40:45 GMT 2013
10  * Version : 0.51
11  * ---
12  * Description: An implementation of a generic, queue ADT.
13  *
14  * 2013-02-19 Made some revision to the Doxygen documentation. Enhanced the description of
15  * in/out parameters - i.e. double-pointers.
16  * 2015-03-31 This code ready for ver. 0.51
17  */
18 
24 #include <stdio.h>
25 #include <stdlib.h>
26 
27 #include "queue.h"
28 
29 
30 /* FUNCTION DEFINITIONS --------------------------------------------------- */
31 
32 Queue QUEUEinit(void (*destroy)(void *data))
33 {
34  return SLISTinit(destroy);
35 }
36 
38 {
39  SLISTdestroy(que);
40 }
41 
42 int QUEUEenqueue(Queue que, const void *data)
43 {
44  return SLISTinsnext(que, SLISTtail(que), data);
45 }
46 
47 int QUEUEdequeue(Queue que, void **data)
48 {
49  return SLISTremnext(que, NULL, data);
50 }
51 
52 void *QUEUEpeek(Queue que)
53 {
54  return SLISTsize(que) == 0 ? NULL : SLISTdata(SLISThead(que));
55 }
56 
58 {
59  return SLISTsize(que) == 0 ? 1 : 0;
60 }
61 
62 int QUEUEsize(Queue que)
63 {
64  return SLISTsize(que);
65 }
66