From 5ef3c0d3be58b6741a9e443e6d2151de2b3a59bc Mon Sep 17 00:00:00 2001 From: Riku Isokoski Date: Sun, 2 Oct 2022 21:58:04 +0300 Subject: Implement a return app stack Each opened app (screen) is pushed on a stack, which is then popped from when returning instead of hard coded "previous apps". Return swipe and refresh directions are automatically determined from the app transition. --- src/StaticStack.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/StaticStack.h (limited to 'src/StaticStack.h') diff --git a/src/StaticStack.h b/src/StaticStack.h new file mode 100644 index 00000000..64886604 --- /dev/null +++ b/src/StaticStack.h @@ -0,0 +1,38 @@ +#include +#include + +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