#pragma once #include "akSTLLinker.h" #include class AKSTL_DLLSPEC CakQueue { public: CakQueue(void); ~CakQueue(void); public: bool empty() { return m_nDataSize == 0 ? true : false; } size_t size() { return m_nDataSize; } char* front() { return &m_pQueue[m_stPoint]; } char* back() { return &m_pQueue[m_stPoint+m_nDataSize-1]; } void push(char _Val) { if(m_stPoint+m_nDataSize >= m_nMemSize) { size_t newsize = m_nMemSize*2; char* pNewQueue = new char [newsize]; memcpy(pNewQueue, &m_pQueue[m_stPoint], sizeof(char)*(m_nMemSize-m_stPoint)); m_nMemSize = newsize; m_stPoint = 0; char* pTemp = m_pQueue; m_pQueue = pNewQueue; delete [] pTemp; } m_pQueue[m_stPoint+m_nDataSize] = _Val; m_nDataSize++; } void push(char* pVal, int nSize) { if(m_stPoint+m_nDataSize + nSize >= m_nMemSize) { size_t newsize = m_nMemSize+nSize*2; char* pNewQueue = new char [newsize]; memcpy(pNewQueue, &m_pQueue[m_stPoint], sizeof(char)*(m_nMemSize-m_stPoint)); m_nMemSize = newsize; m_stPoint = 0; char* pTemp = m_pQueue; m_pQueue = pNewQueue; delete [] pTemp; } //m_enPoint++; memcpy(&m_pQueue[m_stPoint+m_nDataSize], pVal, sizeof(char)*nSize); m_nDataSize+=nSize; } void pop() { m_stPoint++; m_nDataSize--; if(m_nDataSize == 0) { m_stPoint=m_nDataSize=0; } } void pop(int nSize) { m_stPoint += nSize; m_nDataSize -= nSize; if(m_nDataSize == 0) { m_stPoint=m_nDataSize=0; } } private: size_t m_stPoint; //¸Þ¸ð¸® ½ÃÀÛÀ§Ä¡ size_t m_nDataSize; //¸Þ¸ð¸® ³¡ À§Ä¡ size_t m_nMemSize; //ÇÒ´çµÈ ¸Þ¸ð¸® »çÀÌÁî char* m_pQueue; };