General purpose ring buffer library
Dependents: iSerial DGWWebServer iSerial Dumb_box_rev2 ... more
Revision 2:ea6d02ba96ae, committed 2012-09-27
- Comitter:
- ykuroda
- Date:
- Thu Sep 27 13:15:54 2012 +0000
- Parent:
- 1:1c3a10f2eb04
- Commit message:
- pointer edition
Changed in this revision
RingBuffer.cpp | Show annotated file Show diff for this revision Revisions of this file |
RingBuffer.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 1c3a10f2eb04 -r ea6d02ba96ae RingBuffer.cpp --- a/RingBuffer.cpp Fri Aug 31 17:13:40 2012 +0000 +++ b/RingBuffer.cpp Thu Sep 27 13:15:54 2012 +0000 @@ -18,8 +18,7 @@ : bufsize(_bufsize) { buf = new unsigned char [bufsize+1]; - - sp = ep = (unsigned int)buf; + sp = ep = buf; memset(buf,0,bufsize); } @@ -32,15 +31,16 @@ RingBuffer::save(unsigned char c) { if( (ep==sp-1)|| - ((sp==(unsigned int)buf)&& - (ep==(unsigned int)buf+bufsize-1)) ) /* buffer full */ + ((sp==buf)&& + (ep==buf+bufsize-1)) ) /* buffer full */ return 0; - *(unsigned char*)ep = c; + *ep = c; ep++; - if(ep > (unsigned int)buf+bufsize) - ep = (unsigned int)buf; + if(ep > buf+bufsize) + ep = buf; + return 1; } @@ -52,12 +52,13 @@ if(sp == ep) return 0; /* buffer empty */ - ret = *(unsigned char*)sp; - *(unsigned char*)sp = 0; + ret = *sp; + *sp = 0; sp++; - if(sp> (unsigned int)buf+bufsize) - sp = (unsigned int)buf; + if(sp > buf+bufsize) + sp = buf; + return ret; }
diff -r 1c3a10f2eb04 -r ea6d02ba96ae RingBuffer.h --- a/RingBuffer.h Fri Aug 31 17:13:40 2012 +0000 +++ b/RingBuffer.h Thu Sep 27 13:15:54 2012 +0000 @@ -14,8 +14,10 @@ protected: unsigned char* buf; - unsigned int sp; - unsigned int ep; + unsigned char* sp; + unsigned char* ep; + + int bufsize; public: