queue.h

来自「*** *** *** *** *** *** *** *** *** *** 」· C头文件 代码 · 共 71 行

H
71
字号
#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 + =
减小字号Ctrl + -
显示快捷键?