From 47931f41d579371c9c78ae7061317bf28848db2f Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Thu, 16 Mar 2023 21:49:44 +0100 Subject: staticstack: Move to src/utility --- src/utility/StaticStack.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/utility/StaticStack.h (limited to 'src/utility') diff --git a/src/utility/StaticStack.h b/src/utility/StaticStack.h new file mode 100644 index 00000000..40df9354 --- /dev/null +++ b/src/utility/StaticStack.h @@ -0,0 +1,47 @@ +#include +#include + +namespace Pinetime { + namespace Utility { + template + class StaticStack { + public: + T Pop(); + void Push(T element); + void Reset(); + T Top(); + + private: + std::array elementArray; + // Number of elements in stack, points to the next empty slot + size_t stackPointer = 0; + }; + + // Returns random data when popping from empty array. + template + T StaticStack::Pop() { + if (stackPointer > 0) { + stackPointer--; + } + return elementArray[stackPointer]; + } + + template + void StaticStack::Push(T element) { + if (stackPointer < elementArray.size()) { + elementArray[stackPointer] = element; + stackPointer++; + } + } + + template + void StaticStack::Reset() { + stackPointer = 0; + } + + template + T StaticStack::Top() { + return elementArray[stackPointer - 1]; + } + } +} -- cgit v1.2.3-70-g09d2