summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eeg.ino15
1 files changed, 7 insertions, 8 deletions
diff --git a/eeg.ino b/eeg.ino
index a7b928a..b228bf6 100644
--- a/eeg.ino
+++ b/eeg.ino
@@ -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;
}
};