aboutsummaryrefslogtreecommitdiff
path: root/collections/double_ended_queue/double_ended_queue.h
diff options
context:
space:
mode:
authorTucker Evans <tucker@tuckerevans.com>2020-07-04 23:21:11 -0400
committerTucker Evans <tucker@tuckerevans.com>2020-07-04 23:21:11 -0400
commit0fb0ae61369464e9b2b76039eb074806c50e4474 (patch)
tree888fb173440d50ab1ee17d5d008ec71c2b5529ff /collections/double_ended_queue/double_ended_queue.h
parentb0080d500557c6ebe407a714690ea03f78b99c7a (diff)
parent5626429e1de6244aa76273d1a98277d41d1d1888 (diff)
Merge branch 'develop'v0.1.1
Diffstat (limited to 'collections/double_ended_queue/double_ended_queue.h')
-rw-r--r--collections/double_ended_queue/double_ended_queue.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/collections/double_ended_queue/double_ended_queue.h b/collections/double_ended_queue/double_ended_queue.h
new file mode 100644
index 0000000..df3b038
--- /dev/null
+++ b/collections/double_ended_queue/double_ended_queue.h
@@ -0,0 +1,43 @@
+#ifndef DOUBLE_ENDED_QUEUE_H
+#define DOUBLE_ENDED_QUEUE_H
+
+typedef struct double_ended_queue deq;
+
+/*constructors*/
+deq* deq_new();
+deq* deq_with_capacity(int);
+
+/*management*/
+int deq_size(deq*);
+int deq_capacity(deq*);
+deq* deq_cp(deq*);
+
+/* Note: Elements are not freed
+ * deq_clear should be called before if they are no longer needed.*/
+void deq_free(deq*);
+
+/*Free all elements within queue*/
+void deq_clear(deq*);
+
+/*data*/
+void deq_push_front(deq*, void*);
+void deq_push_back(deq*, void*);
+void deq_set(deq*, int, void*);
+void deq_insert(deq*, int, void*);
+void* deq_pop_front(deq*);
+void* deq_pop_back(deq*);
+void* deq_index(deq*, int);
+void* deq_front(deq*);
+void* deq_back(deq*);
+void* deq_swap_rm_front(deq*, int);
+void* deq_swap_rm_back(deq*, int);
+
+void deq_swap(deq*, int, int);
+
+/*Note: Does not currently reduce memory footprint*/
+void deq_truncate(deq*, int);
+void deq_reserve(deq*, int);
+
+void deq_remove(deq*, int);
+void deq_print(deq*, char* (void*));
+#endif