diff --git a/movext.hh b/movext.hh index eae53b5..63d8e94 100644 --- a/movext.hh +++ b/movext.hh @@ -8,6 +8,7 @@ Copyright 2020 Ahmet Inan #include "delay.hh" #include "deque.hh" +#include "stack.hh" namespace DSP { @@ -46,29 +47,29 @@ template class MovMin { Delay window; - Deque dispenser, refill; + Stack dispenser, refill; public: MovMin() : window(std::numeric_limits::max()) { - dispenser.push_front(std::numeric_limits::max()); + dispenser.push(std::numeric_limits::max()); } TYPE operator () (TYPE input) { - if (window(input) == dispenser.front()) - dispenser.pop_front(); + if (window(input) == dispenser.top()) + dispenser.pop(); - while (!refill.empty() && input < refill.front()) - refill.pop_front(); - refill.push_front(input); + while (!refill.empty() && input < refill.top()) + refill.pop(); + refill.push(input); if (dispenser.empty()) { while (!refill.empty()) { - dispenser.push_front(refill.front()); - refill.pop_front(); + dispenser.push(refill.top()); + refill.pop(); } - return dispenser.front(); + return dispenser.top(); } - return dispenser.front() < refill.back() ? dispenser.front() : refill.back(); + return dispenser.top() < refill.first() ? dispenser.top() : refill.first(); } }; @@ -76,29 +77,29 @@ template class MovMax { Delay window; - Deque dispenser, refill; + Stack dispenser, refill; public: MovMax() : window(std::numeric_limits::min()) { - dispenser.push_front(std::numeric_limits::min()); + dispenser.push(std::numeric_limits::min()); } TYPE operator () (TYPE input) { - if (window(input) == dispenser.front()) - dispenser.pop_front(); + if (window(input) == dispenser.top()) + dispenser.pop(); - while (!refill.empty() && input > refill.front()) - refill.pop_front(); - refill.push_front(input); + while (!refill.empty() && input > refill.top()) + refill.pop(); + refill.push(input); if (dispenser.empty()) { while (!refill.empty()) { - dispenser.push_front(refill.front()); - refill.pop_front(); + dispenser.push(refill.top()); + refill.pop(); } - return dispenser.front(); + return dispenser.top(); } - return dispenser.front() > refill.back() ? dispenser.front() : refill.back(); + return dispenser.top() > refill.first() ? dispenser.top() : refill.first(); } };