diff --git a/SHADE_Engine/src/Tools/SHDeque.h b/SHADE_Engine/src/Tools/SHDeque.h new file mode 100644 index 00000000..b8e2287a --- /dev/null +++ b/SHADE_Engine/src/Tools/SHDeque.h @@ -0,0 +1,50 @@ +#pragma once + +#include "SH_API.h" +#include + +namespace SHADE +{ + template + class SH_API SHDeque + { + public: + SHDeque(int n) : max_size(n) {} + + std::deque GetDeque() const + { + return deque; + } + + void InsertFront(T const& obj) + { + if (deque.size() < max_size) + deque.push_front(std::move(obj)); + else + { + deque.pop_back(); + deque.push_front(std::move(obj)); + } + } + + bool IsEmpty() + { + return deque.empty(); + } + + void Pop() + { + deque.pop_front(); + } + + T const& Top() + { + return deque.front(); + } + + private: + int max_size; + std::deque deque; + + }; +} \ No newline at end of file