#include "hashint.h" #include "hashtable.h" #include "listint.h" #include "list.h" #include "keyint.h" ////////////////////////////////////////////////////////////////////////////// // CHashInt Class // CHashInt::CHashInt() { m_pCHashTable = NULL; } CHashInt::~CHashInt() { Uninit(); } BOOL CHashInt::Init(INT_32 uiBuckets/* = 127*/) { ASSERT( m_pCHashTable == NULL ); m_pCHashTable = new CHashTable, VOID*, CKeyInt>; ASSERT( m_pCHashTable != NULL ); return ((CHashTable, VOID*, CKeyInt>*)m_pCHashTable)->Init(uiBuckets); } VOID CHashInt::Uninit() { if ( m_pCHashTable != NULL ) { delete (CHashTable, VOID*, CKeyInt>*)m_pCHashTable; m_pCHashTable = NULL; } } VOID *CHashInt::Insert(VOID *pvData, const INT_32 iKey) { CKeyInt key; ASSERT( m_pCHashTable != NULL ); key.Set(iKey); return ((CHashTable, VOID*, CKeyInt>*)m_pCHashTable)->Insert(pvData, key); } VOID *CHashInt::Peek(const INT_32 iKey) { CKeyInt key; ASSERT( m_pCHashTable != NULL ); key.Set(iKey); return ((CHashTable, VOID*, CKeyInt>*)m_pCHashTable)->Peek(key); } VOID *CHashInt::Remove(const INT_32 iKey) { CKeyInt key; ASSERT( m_pCHashTable != NULL ); key.Set(iKey); return ((CHashTable, VOID*, CKeyInt>*)m_pCHashTable)->Remove(key); } VOID *CHashInt::RemoveFirst() { ASSERT( m_pCHashTable != NULL ); return ((CHashTable, VOID*, CKeyInt>*)m_pCHashTable)->RemoveFirst(); } VOID CHashInt::Display() { ASSERT( m_pCHashTable != NULL ); ((CHashTable, VOID*, CKeyInt>*)m_pCHashTable)->Display(); } ////////////////////////////////////////////////////////////////////////////// // CListInt Class // CListInt::CListInt() { m_pCList = NULL; } CListInt::~CListInt() { Uninit(); } BOOL CListInt::Init() { ASSERT( m_pCList == NULL ); m_pCList = new CList; ASSERT( m_pCList != NULL ); return ((CList*)m_pCList)->Init(); } VOID CListInt::Uninit() { if ( m_pCList != NULL ) { delete (CList*)m_pCList; m_pCList = NULL; } } VOID *CListInt::InsertForward(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->InsertForward(pvData, key); } VOID *CListInt::InsertBackward(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->InsertBackward(pvData, key); } VOID *CListInt::InsertFirst(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->InsertFirst(pvData, key); } VOID *CListInt::InsertLast(VOID *pvData, INT_32 iKey) { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->InsertLast(pvData, key); } VOID CListInt::InsertArray(VOID *pDataArray, size_t sizeItem, UINT_32 uiNumItems) { UINT_32 i; ASSERT( m_pCList != NULL ); for (i = 0; i < uiNumItems; i++) { // InsertLast(pDataArray, (INT_32)pDataArray); InsertLast(pDataArray, 0); // SunOS CC compiler couldn't deal with this. // pDataArray += sizeItem; UINT_32 foo = (UINT_32)pDataArray; foo += sizeItem; pDataArray = (VOID *) foo; } } VOID *CListInt::RemoveForward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->RemoveForward(key); } VOID *CListInt::RemoveBackward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->RemoveBackward(key); } VOID *CListInt::RemoveFirst(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCList != NULL ); if ( piKey == NULL ) { pvData = ((CList*)m_pCList)->RemoveFirst(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CList*)m_pCList)->RemoveFirst(&key); *piKey = key.Get(); } return pvData; } VOID *CListInt::RemoveLast(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCList != NULL ); if ( piKey == NULL ) { pvData = ((CList*)m_pCList)->RemoveLast(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CList*)m_pCList)->RemoveLast(&key); *piKey = key.Get(); } return pvData; } VOID CListInt::RemoveAll() { ASSERT( m_pCList != NULL ); ((CList*)m_pCList)->RemoveAll(); } VOID *CListInt::Remove(VOID *pvData) { return ((CList*)m_pCList)->Remove(pvData); } VOID *CListInt::PeekForward(INT_32 iKey) const { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->PeekForward(key); } VOID *CListInt::PeekBackward(INT_32 iKey) const { CKeyInt key; ASSERT( m_pCList != NULL ); key.Set(iKey); return ((CList*)m_pCList)->PeekBackward(key); } VOID *CListInt::PeekFirst(INT_32 *piKey/* = NULL*/) const { VOID *pvData; ASSERT( m_pCList != NULL ); if ( piKey == NULL ) { pvData = ((CList*)m_pCList)->PeekFirst(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CList*)m_pCList)->PeekFirst(&key); *piKey = key.Get(); } return pvData; } VOID *CListInt::PeekLast(INT_32 *piKey/* = NULL*/) const { VOID *pvData; ASSERT( m_pCList != NULL ); if ( piKey == NULL ) { pvData = ((CList*)m_pCList)->PeekLast(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CList*)m_pCList)->PeekLast(&key); *piKey = key.Get(); } return pvData; } VOID CListInt::Display() { ASSERT( m_pCList != NULL ); ((CList*)m_pCList)->Display(); } #ifdef SORT_ENABLED BOOL CListInt::Sort() { ASSERT( m_pCList != NULL ); return ((CList*)m_pCList)->Sort(); } #endif // SORT_ENABLED UINT_32 CListInt::GetLength() { ASSERT( m_pCList != NULL ); return ((CList*)m_pCList)->GetLength(); } ////////////////////////////////////////////////////////////////////////////// // CListIterInt Class // CListIterInt::CListIterInt() { m_pCListIter = NULL; } CListIterInt::~CListIterInt() { Uninit(); } BOOL CListIterInt::Init(const CListInt *pCListInt) { ASSERT( pCListInt != NULL ); if ( m_pCListIter == NULL ) { m_pCListIter = new CListIter; ASSERT( m_pCListIter != NULL ); } return ((CListIter*)m_pCListIter)-> Init((CList*)(pCListInt->m_pCList)); } VOID CListIterInt::Uninit() { if ( m_pCListIter != NULL ) { delete (CListIter*)m_pCListIter; m_pCListIter = NULL; } } VOID *CListIterInt::PeekForward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCListIter != NULL ); key.Set(iKey); return ((CListIter*)m_pCListIter)->PeekForward(key); } VOID *CListIterInt::PeekBackward(INT_32 iKey) { CKeyInt key; ASSERT( m_pCListIter != NULL ); key.Set(iKey); return ((CListIter*)m_pCListIter)->PeekBackward(key); } VOID *CListIterInt::PeekFirst(INT_32 *piKey/* = NULL */) { VOID *pvData; ASSERT( m_pCListIter != NULL ); if ( piKey == NULL ) { pvData = ((CListIter*)m_pCListIter)->PeekFirst(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CListIter*)m_pCListIter)->PeekFirst(&key); *piKey = key.Get(); } return pvData; } VOID *CListIterInt::PeekNext(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCListIter != NULL ); if ( piKey == NULL ) { pvData = ((CListIter*)m_pCListIter)->PeekNext(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CListIter*)m_pCListIter)->PeekNext(&key); *piKey = key.Get(); } return pvData; } VOID *CListIterInt::PeekLast(INT_32 *piKey/* = NULL */) { VOID *pvData; ASSERT( m_pCListIter != NULL ); if ( piKey == NULL ) { pvData = ((CListIter*)m_pCListIter)->PeekLast(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CListIter*)m_pCListIter)->PeekLast(&key); *piKey = key.Get(); } return pvData; } VOID *CListIterInt::PeekPrev(INT_32 *piKey/* = NULL*/) { VOID *pvData; ASSERT( m_pCListIter != NULL ); if ( piKey == NULL ) { pvData = ((CListIter*)m_pCListIter)->PeekPrev(NULL); } else { CKeyInt key; key.SetNull(); pvData = ((CListIter*)m_pCListIter)->PeekPrev(&key); *piKey = key.Get(); } return pvData; } CListInt *CreateList() { CListInt *pCListInt; pCListInt = new CListInt(); ASSERT( pCListInt != NULL ); pCListInt->Init(); return pCListInt; } CListInt *InsertList(CListInt *pCListInt, VOID *pvData) { ASSERT( pCListInt != NULL ); pCListInt->InsertLast(pvData, 0); return pCListInt; }