ringbuf.hpp
来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· HPP 代码 · 共 98 行
HPP
98 行
/* -*-C-*-
*
* $Revision: 1.2 $
* $Author: kwelton $
* $Date: 2000/06/14 03:38:23 $
*
* ringbuf:
*
* Class implementing a simple ring buffer
*
* Copyright (c) 2000 ARM Limited
* All Rights Reserved
*/
#ifndef ringbuf_hpp
#define ringbuf_hpp
class RingBuf
{
public:
RingBuf(void)
{
fillindex = drainindex = 0;
indexmask = 0x07;
buffer = new unsigned int[8];
}
~RingBuf(void)
{
delete[] buffer;
}
inline bool add(unsigned int value)
{
if (fillindex != ((drainindex - 1) & indexmask))
{
buffer[fillindex] = value;
++fillindex;
fillindex &= indexmask;
return true;
}
else
return false;
}
inline bool extract(unsigned int *value)
{
if (drainindex != fillindex)
{
*value = buffer[drainindex];
++drainindex;
drainindex &= indexmask;
return true;
}
else
return false;
}
inline bool peek(unsigned int *value)
{
if (drainindex != fillindex)
{
*value = buffer[drainindex];
return true;
}
else
return false;
}
inline void advancedrain(void)
{
if (drainindex != fillindex)
{
++drainindex;
drainindex &= indexmask;
}
}
inline bool empty(void)
{
return fillindex == drainindex;
}
private:
unsigned int fillindex;
unsigned int drainindex;
unsigned int *buffer;
unsigned int indexmask;
};
#endif /* ndef ringbuf_hpp */
/* EOF ringbuf.hpp */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?