queue.c File Reference

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
#include "types.h"
Include dependency graph for queue.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

queue_t * create_queue ()
void enqueue_item (queue_t *q, void *item)
void * dequeue_item (queue_t *q)
void destroy_queue (queue_t *q)
int is_empty (queue_t *q)

Function Documentation

queue_t* create_queue (  ) 

Definition at line 35 of file queue.c.

00036 {
00037         queue_t *q = (queue_t *)malloc(sizeof(queue_t));
00038         q->head = NULL;
00039         q->tail = NULL;
00040         q->count = 0;
00041 
00042         return q;
00043 }

Here is the caller graph for this function:

void* dequeue_item ( queue_t *  q  ) 

Definition at line 81 of file queue.c.

00082 {
00083         void *item;
00084         queue_node_t *node;
00085 
00086         oassert(q != NULL);
00087         oassert(q->head != NULL);
00088 
00089         q->count--;
00090 
00091         node = q->head;
00092         item = node->item;
00093         q->head = q->head->next;
00094         if (q->head == NULL)
00095                 q->tail = NULL;
00096 
00097         free(node);
00098 
00099         return item;
00100 }

Here is the caller graph for this function:

void destroy_queue ( queue_t *  q  ) 

Definition at line 107 of file queue.c.

00108 {
00109         while (!is_empty(q))
00110                 dequeue_item(q);
00111         free(q);
00112 }

Here is the call graph for this function:

Here is the caller graph for this function:

void enqueue_item ( queue_t *  q,
void *  item 
)

Definition at line 48 of file queue.c.

00049 {
00050         queue_node_t *node;
00051         
00052 //      node = q->head;
00053 //      while (node != NULL)
00054 //      {
00055 //              if (node->item == item)
00056 //                      return;
00057 //              node = node->next;
00058 //      }
00059         oassert(item != NULL);
00060         oassert(q != NULL);
00061         node = (queue_node_t *)malloc(sizeof(queue_node_t));
00062         node->next = NULL;
00063         node->item = item;
00064 
00065         q->count++;
00066 
00067         /* add the new node to the end */
00068         if (q->tail == NULL)
00069                 q->tail = node;
00070         else
00071                 q->tail->next = node;
00072         q->tail = node;
00073 
00074         if (q->head == NULL)
00075                 q->head = node;
00076 }

Here is the caller graph for this function:

int is_empty ( queue_t *  q  ) 

Definition at line 117 of file queue.c.

00118 {
00119         return q->head == NULL;
00120 }

Here is the caller graph for this function:

Generated on Tue Aug 2 10:43:48 2011 for ODIN_II by  doxygen 1.6.3