📄 queue.h
字号:
#ifndef _WDL_QUEUE_H_
#define _WDL_QUEUE_H_
#include "heapbuf.h"
class WDL_Queue
{
public:
WDL_Queue() : m_pos(0)
{
}
~WDL_Queue()
{
}
void Add(const void *buf, int len)
{
int olen=m_hb.GetSize();
void *obuf=m_hb.Resize(olen+len);
if (obuf) memcpy((char*)obuf+olen,buf,len);
}
int GetSize()
{
return m_hb.GetSize()-m_pos;
}
void *Get()
{
void *buf=m_hb.Get();
if (buf && m_pos >= 0 && m_pos < m_hb.GetSize()) return (char *)buf+m_pos;
return NULL;
}
int Available()
{
return m_hb.GetSize() - m_pos;
}
void Advance(int bytecnt)
{
m_pos+=bytecnt;
}
void Compact()
{
if (m_pos > 0)
{
int olen=m_hb.GetSize();
if (m_pos < olen)
{
void *a=m_hb.Get();
if (a) memcpy(a,(char*)a+m_pos,olen-m_pos);
m_hb.Resize(olen-m_pos);
}
else m_hb.Resize(0);
m_pos=0;
}
}
private:
WDL_HeapBuf m_hb;
int m_pos;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -