Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
2.0 KiB

//
// imelist.cpp
//
#include "private.h"
#include "immlist.h"
//+---------------------------------------------------------------------------
//
// ctor
//
//----------------------------------------------------------------------------
CVoidPtrCicList::CVoidPtrCicList()
{
_pitemHdr = NULL;
_pitemLast = NULL;
}
//+---------------------------------------------------------------------------
//
// Add
//
//----------------------------------------------------------------------------
void CVoidPtrCicList::Add(CVoidPtrCicListItem *pitem)
{
if (!_pitemLast)
_pitemHdr = pitem;
else
_pitemLast->_pNext = pitem;
pitem->_pNext = NULL;
_pitemLast = pitem;
}
//+---------------------------------------------------------------------------
//
// Remove
//
//----------------------------------------------------------------------------
BOOL CVoidPtrCicList::Remove(CVoidPtrCicListItem *pitem)
{
CVoidPtrCicListItem *pitemTmp;
CVoidPtrCicListItem *pitemPrev = NULL;
pitemTmp = _pitemHdr;
while(pitemTmp)
{
if (pitemTmp == pitem)
{
if (!pitemPrev)
{
_pitemHdr = pitemTmp->_pNext;
}
else
{
pitemPrev->_pNext = pitemTmp->_pNext;
}
if (_pitemLast == pitem)
{
_pitemLast = pitemPrev;
}
return TRUE;
}
pitemPrev = pitemTmp;
pitemTmp = pitemTmp->_pNext;
}
return FALSE;
}
//+---------------------------------------------------------------------------
//
// Find
//
//----------------------------------------------------------------------------
CVoidPtrCicListItem *CVoidPtrCicList::Find(void *pHandle)
{
CVoidPtrCicListItem *pitem;
pitem = _pitemHdr;
while(pitem)
{
if (pitem->_pHandle == pHandle)
return pitem;
pitem = pitem->_pNext;
}
return NULL;
}