Some fixes + improvements (Vector) + code reformatting
[cgds.git] / src / Queue.c
index 5b24a3d..0b22edf 100644 (file)
@@ -6,80 +6,59 @@
 
 void _queue_init(Queue* queue, size_t dataSize)
 {
-       queue->size = 0;
-       queue->dataSize = dataSize;
-       queue->front = NULL;
-       queue->back = NULL;
+  queue->dataSize = dataSize;
+  _list_init(queue->list, dataSize);
 }
 
 Queue* _queue_new(size_t dataSize)
 {
-       Queue* queue = (Queue*) safe_malloc(sizeof (Queue));
-       _queue_init(queue, dataSize);
-       return queue;
+  Queue* queue = (Queue*) safe_malloc(sizeof (Queue));
+  queue->list = _list_new(dataSize);
+  _queue_init(queue, dataSize);
+  return queue;
 }
 
 Queue* queue_copy(Queue* queue)
 {
-       Queue* queueCopy = _queue_new(queue->dataSize);
-       QueueCell* queueCell = queue->front;
-       while (queueCell != NULL)
-       {
-               _queue_push(queueCopy, queueCell->data);
-               queueCell = queueCell->next;
-       }
-       return queueCopy;
+  Queue* queueCopy = (Queue*) safe_malloc(sizeof (Queue));
+  queueCopy->dataSize = queue->dataSize;
+  List* listCopy = list_copy(queue->list);
+  queueCopy->list = listCopy;
+  return queueCopy;
 }
 
-Bool queue_empty(Queue* queue)
+bool queue_empty(Queue* queue)
 {
-       return (queue->size == 0);
+  return list_empty(queue->list);
 }
 
 UInt queue_size(Queue* queue)
 {
-       return queue->size;
+  return list_size(queue->list);
 }
 
 void _queue_push(Queue* queue, void* data)
 {
-       QueueCell* newQueueBack = (QueueCell*) safe_malloc(sizeof (QueueCell));
-       newQueueBack->data = safe_malloc(queue->dataSize);
-       memcpy(newQueueBack->data, data, queue->dataSize);
-       newQueueBack->next = NULL;
-       if (queue->size > 0) 
-               queue->back->next = newQueueBack;
-       queue->back = newQueueBack;
-       if (queue->size == 0) 
-               queue->front = newQueueBack;
-       queue->size++;
+  _list_insert_back(queue->list, data);
 }
 
 void* _queue_peek(Queue* queue)
 {
-       return queue->front->data;
+  return _list_get(queue->list->head);
 }
 
 void queue_pop(Queue* queue)
 {
-       QueueCell* toTrash = queue->front;
-       queue->front = queue->front->next;
-       if (queue->front == NULL) 
-               queue->back = NULL;
-       safe_free(toTrash->data);
-       safe_free(toTrash);
-       queue->size--;
+  list_remove_front(queue->list);
 }
 
 void queue_clear(Queue* queue)
 {
-       while (queue->size > 0) 
-               queue_pop(queue);
-       _queue_init(queue, queue->dataSize);
+  list_clear(queue->list);
 }
 
 void queue_destroy(Queue* queue)
 {
-       queue_clear(queue);
-       safe_free(queue);
+  list_destroy(queue->list);
+  safe_free(queue);
 }