From 8325b7e2be668f28c57230cf9b7a26379cc4ddf4 Mon Sep 17 00:00:00 2001 From: Glence Date: Wed, 19 Oct 2022 10:17:34 +0800 Subject: [PATCH] base class for deque --- SHADE_Engine/src/Tools/SHDeque.h | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 SHADE_Engine/src/Tools/SHDeque.h 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