From 12186dd1104eba82c45edde100754cc9622b1447 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 5 Aug 2016 10:52:49 +0100 Subject: nicer queue implementation head+length, not head+tail! --- eeg.ino | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'eeg.ino') diff --git a/eeg.ino b/eeg.ino index a7b928a..b228bf6 100644 --- a/eeg.ino +++ b/eeg.ino @@ -6,34 +6,33 @@ template 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; } }; -- cgit v1.2.3