aboutsummaryrefslogtreecommitdiff
path: root/src/app/stack.tpp
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-02-15 20:27:51 +0100
committerHampusM <hampus@hampusmat.com>2022-02-15 20:27:51 +0100
commit5dae8f8d10d506abc3c75a1f66c1dfe620c84fc1 (patch)
tree2bfb6efef0535a35bab1da811a5f69cb5203dff9 /src/app/stack.tpp
parent9147551cd21d565f9503e3ebbcd2121e284d88d5 (diff)
refactor: improve project design
Diffstat (limited to 'src/app/stack.tpp')
-rw-r--r--src/app/stack.tpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/app/stack.tpp b/src/app/stack.tpp
new file mode 100644
index 0000000..bcdafc0
--- /dev/null
+++ b/src/app/stack.tpp
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "stack.hpp"
+
+#include <iostream>
+#include <stdexcept>
+
+template <typename Item>
+Stack<Item>::Stack(uint64_t capacity)
+{
+ _items.reserve(capacity);
+}
+
+template <typename Item>
+void Stack<Item>::push(Item item)
+{
+ if (_items.size() == _items.capacity())
+ {
+ throw std::overflow_error("Tried to push when stack is full");
+ }
+
+ _items.push_back(item);
+}
+
+template <typename Item>
+void Stack<Item>::pop()
+{
+ if (_items.empty())
+ {
+ throw std::underflow_error("Tried to pop when stack size is 0");
+ }
+
+ _items.pop_back();
+}
+
+template <typename Item>
+Item Stack<Item>::peek()
+{
+ if (_items.empty())
+ {
+ throw std::underflow_error("Tried to peek when stack size is 0");
+ }
+
+ return _items.back();
+}