diff options
-rw-r--r-- | eeg.ino | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -6,34 +6,33 @@ template <class E, int Len=10> class Queue { private: E queue[Len]; - byte qHead,qTail; + byte qHead,qLen; public: - Queue() : qHead(0), qTail(0) { } + Queue() : qHead(0), qLen(0) { } bool empty() { return length()==0; } bool full() { - return length()==Len-1; + return length()==Len; } int length() { - return (qTail+Len-qHead)%Len; + return qLen; } E* current() { return &queue[qHead]; } void remove() { if (empty()) return; - qHead++; + ++qHead;--qLen; qHead %= Len; } void add(const E &value) { if (full()) return; - queue[qTail] = value; + queue[(qHead+qLen)%Len] = value; - qTail++; - qTail %= Len; + ++qLen; } }; |