?? tcssl.cpp
字號:
// TcsSL.cpp
// 鄧雪清, 2008/12/15
#include "TcsSL.h"
/////////////////////////////////////////////////////////////////////////////
// CTcsSL
CTcsSL::CTcsSL(void)
{
m_nSize = 0;
m_pHead = m_pFree = 0;
m_mLock = ::CreateMutex(0, 0, 0);
}
CTcsSL::~CTcsSL(void)
{
if (m_mLock)
::WaitForSingleObject(m_mLock, INFINITE);
NODE *pNode;
while (m_pHead)
{
pNode = m_pHead;
m_pHead = pNode->next;
delete pNode;
}
while (m_pFree)
{
pNode = m_pFree;
m_pFree = pNode->next;
delete pNode;
}
if (m_mLock)
::CloseHandle(m_mLock);
}
CTcsSL::NODE *CTcsSL::NewNode(void)
{
CTcsSL::NODE* pNode;
if (!m_pFree)
{
pNode = new CTcsSL::NODE;
if (!pNode)
return 0;
}
else
{
pNode = m_pFree;
m_pFree = pNode->next;
}
return pNode;
}
void *CTcsSL::PutData(void *pData)
{
NODE *pNode = NewNode();
if (!pNode)
return 0;
pNode->next = m_pHead;
pNode->data = pData;
m_pHead = pNode;
m_nSize++;
return pNode;
}
void *CTcsSL::PopData(void)
{
if (!m_pHead)
return 0;
m_nSize--;
NODE *pNode = m_pHead;
m_pHead = m_pHead->next;
void *pData = pNode->data;
// Insert Free List;
if (m_pFree)
{
pNode->next = m_pFree;
pNode->data = 0;
m_pFree = pNode;
}
else
{
pNode->next = 0;
pNode->data = 0;
m_pFree = pNode;
}
return pData;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -