diff options
author | HampusM <hampus@hampusmat.com> | 2022-02-15 20:27:51 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-02-15 20:27:51 +0100 |
commit | 5dae8f8d10d506abc3c75a1f66c1dfe620c84fc1 (patch) | |
tree | 2bfb6efef0535a35bab1da811a5f69cb5203dff9 /src/app/stack.tpp | |
parent | 9147551cd21d565f9503e3ebbcd2121e284d88d5 (diff) |
refactor: improve project design
Diffstat (limited to 'src/app/stack.tpp')
-rw-r--r-- | src/app/stack.tpp | 45 |
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(); +} |