#include "list.h" #include "circularlistint.h" #include "keyint.h" ////////////////////////////////////////////////////////////////////////////// // CCircularListInt Class // CCircularListInt::CCircularListInt() { m_pCCircularList = NULL; } CCircularListInt::~CCircularListInt() { Uninit(); } BOOL CCircularListInt::Init() { ASSERT( m_pCCircularList == NULL ); m_pCCircularList = new CCircularList; ASSERT( m_pCCircularList != NULL ); return ((CCircularList*)m_pCCircularList)->Init(); } VOID CCircularListInt::Uninit() { if ( m_pCCircularList != NULL ) { delete (CCircularList*)m_pCCircularList; m_pCCircularList = NULL; } } VOID *CCircularListInt::InsertForward(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->InsertForward(pvData, key); } VOID *CCircularListInt::InsertBackward(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->InsertBackward(pvData, key); } VOID *CCircularListInt::InsertFirst(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->InsertFirst(pvData, key); } VOID *CCircularListInt::InsertLast(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->InsertLast(pvData, key); } VOID *CCircularListInt::RemoveForward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->RemoveForward(key); } VOID *CCircularListInt::RemoveBackward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->RemoveBackward(key); } VOID *CCircularListInt::RemoveFirst(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCCircularList != NULL ); if ( piKey == NULL ) { pvData = ((CCircularList*)m_pCCircularList)->RemoveFirst(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularList*)m_pCCircularList)->RemoveFirst(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListInt::RemoveLast(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCCircularList != NULL ); if ( piKey == NULL ) { pvData = ((CCircularList*)m_pCCircularList)->RemoveLast(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularList*)m_pCCircularList)->RemoveLast(&key); *piKey = key.Get(); } return pvData; } VOID CCircularListInt::RemoveAll() { ASSERT( m_pCCircularList != NULL ); ((CCircularList*)m_pCCircularList)->RemoveAll(); } VOID *CCircularListInt::PeekForward(INT_32 iKey) const { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->PeekForward(key); } VOID *CCircularListInt::PeekBackward(INT_32 iKey) const { CKeyInt key; ASSERT( m_pCCircularList != NULL ); key.Set(iKey); return ((CCircularList*)m_pCCircularList)->PeekBackward(key); } VOID *CCircularListInt::PeekFirst(INT_32 *piKey/* = NULL*/) const { VOID *pvData; ASSERT( m_pCCircularList != NULL ); if ( piKey == NULL ) { pvData = ((CCircularList*)m_pCCircularList)->PeekFirst(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularList*)m_pCCircularList)->PeekFirst(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListInt::PeekLast(INT_32 *piKey/* = NULL*/) const { VOID *pvData; ASSERT( m_pCCircularList != NULL ); if ( piKey == NULL ) { pvData = ((CCircularList*)m_pCCircularList)->PeekLast(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularList*)m_pCCircularList)->PeekLast(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListInt::PeekFirstLink(INT_32 *piKey/* = NULL*/) const { VOID *pvData; ASSERT( m_pCCircularList != NULL ); if ( piKey == NULL ) { pvData = ((CCircularList*)m_pCCircularList)->PeekFirstLink(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularList*)m_pCCircularList)->PeekFirstLink(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListInt::PeekLastLink(INT_32 *piKey/* = NULL*/) const { VOID *pvData; ASSERT( m_pCCircularList != NULL ); if ( piKey == NULL ) { pvData = ((CCircularList*)m_pCCircularList)->PeekLastLink(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularList*)m_pCCircularList)->PeekLastLink(&key); *piKey = key.Get(); } return pvData; } VOID CCircularListInt::Display() { ASSERT( m_pCCircularList != NULL ); ((CCircularList*)m_pCCircularList)->Display(); } /* UINT_32 CCircularListInt::GetLength() { ASSERT( m_pCCircularList != NULL ); return ((CCircularList*)m_pCCircularList)->GetLength(); } */ VOID *CCircularListInt::GetHead() { return ((CCircularList *)m_pCCircularList)->GetHead(); } inline VOID *CCircularListInt::GetTail() { return ((CCircularList *)m_pCCircularList)->GetTail(); } VOID CCircularListInt::SetHead(VOID *pHead) { ((CCircularList *)m_pCCircularList)-> SetHead((CLink *)pHead); } VOID CCircularListInt::SetTail(VOID *pTail) { ((CCircularList *)m_pCCircularList)-> SetTail((CLink *)pTail); } VOID CCircularListInt::SetHeadNext(VOID *pNext) { ((CCircularList *)m_pCCircularList)-> SetHeadNext((CLink *)pNext); } VOID CCircularListInt::SetHeadPrev(VOID *pPrev) { ((CCircularList *)m_pCCircularList)-> SetHeadPrev((CLink *)pPrev); } ////////////////////////////////////////////////////////////////////////////// // CCircularListIterInt Class // CCircularListIterInt::CCircularListIterInt() { m_pCCircularListIter = NULL; } CCircularListIterInt::~CCircularListIterInt() { Uninit(); } BOOL CCircularListIterInt::Init(CCircularListInt *pCCircularListInt) { ASSERT( pCCircularListInt != NULL ); if ( m_pCCircularListIter == NULL ) { m_pCCircularListIter = new CCircularListIter; ASSERT( m_pCCircularListIter != NULL ); } return ((CCircularListIter*)m_pCCircularListIter)-> Init((CCircularList*)(pCCircularListInt->m_pCCircularList)); } VOID CCircularListIterInt::Uninit() { if ( m_pCCircularListIter != NULL ) { delete (CCircularListIter*)m_pCCircularListIter; m_pCCircularListIter = NULL; } } VOID CCircularListIterInt::SetCurr(VOID *pCurr) { ((CCircularListIter*)m_pCCircularListIter)-> SetCurr((CLink*)pCurr); } VOID *CCircularListIterInt::PeekForward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularListIter != NULL ); key.Set(iKey); return ((CCircularListIter*)m_pCCircularListIter)->PeekForward(key); } VOID *CCircularListIterInt::PeekBackward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCCircularListIter != NULL ); key.Set(iKey); return ((CCircularListIter*)m_pCCircularListIter)->PeekBackward(key); } VOID *CCircularListIterInt::PeekFirst(INT_32 *piKey/* = NULL */) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekFirst(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekFirst(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekNext(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekNext(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekNext(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekLast(INT_32 *piKey/* = NULL */) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekLast(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekLast(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekPrev(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekPrev(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekPrev(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekFirstLink(INT_32 *piKey/* = NULL */) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekFirstLink(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekFirstLink(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekNextLink(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekNextLink(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekNextLink(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekLastLink(INT_32 *piKey/* = NULL */) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekLastLink(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekLastLink(&key); *piKey = key.Get(); } return pvData; } VOID *CCircularListIterInt::PeekPrevLink(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCCircularListIter != NULL ); if ( piKey == NULL ) { pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekPrevLink(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CCircularListIter*)m_pCCircularListIter)->PeekPrevLink(&key); *piKey = key.Get(); } return pvData; }