IM920地温観測システム CQ 2017ARMセミナー用サンプルプログラム
Dependencies: C027_Support_ForIM920
Fork of C027_SupportTest by
Diff: RingBuf.cpp
- Revision:
- 35:7838543282c2
diff -r 1cbf923d4ca7 -r 7838543282c2 RingBuf.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RingBuf.cpp Thu Jul 13 00:44:49 2017 +0000 @@ -0,0 +1,50 @@ +#include "RingBuf.h" + +RingBuf::RingBuf(int _size) +{ + buf = new RingBufType[_size]; + size = _size; + wp = 0; + rp = 0; + latest = -1; +} + +RingBuf::~RingBuf() +{ + delete [] buf; +} + +void RingBuf::push(RingBufType *d) +{ + latest = wp; + buf[wp++] = *d; + wp %= size; +} +RingBufType* RingBuf::pop(void) +{ + if (rp == wp) return NULL; + RingBufType *d = &buf[rp++]; + rp %= size; + return d; +} +int RingBuf::len_get(void) +{ + int i = wp - rp; + if (i < 0) i += size; + return i; +} +int RingBuf::size_get(void) +{ + return size; +} +void RingBuf::clear(void) +{ + rp = 0; + wp = 0; +} +RingBufType* RingBuf::peek(int p) +{ + if (p < 0 || p >= size) return NULL; + return &buf[p]; +} +