#include "lid.h" LIDmap::LIDmap() { // Start LIDs at 1 so we can reserve 0 for unassigned m_lid = 1; m_uiArraySize = 0; m_pPtrArray = NULL; } LIDmap::~LIDmap() { delete [] m_pPtrArray; } VOID LIDmap::Init(UINT_32 size) { ASSERT(m_pPtrArray == NULL); UINT_32 i; m_pPtrArray = new VOID * [size]; for (i = 0; i < m_uiArraySize; i++) { m_pPtrArray[i] = NULL; } m_uiArraySize = size; } VOID LIDmap::SetPtr(LID lid, VOID *ptr) { if (lid >= m_uiArraySize) { if (m_uiArraySize == 0) Init(); else if (lid >= (2 * m_uiArraySize)) ExpandArray(2 * lid); else ExpandArray(2 * m_uiArraySize); } ASSERT(lid < m_uiArraySize); m_pPtrArray[lid] = ptr; } /* VOID LIDmap::DoubleArray() { ASSERT(m_uiArraySize > 0); VOID **pNewData; pNewData = new VOID * [2 * m_uiArraySize]; UINT_32 i; for (i = 0; i < m_uiArraySize; i++) { pNewData[i] = m_pPtrArray[i]; } for (i = m_uiArraySize; i < 2 * m_uiArraySize; i++) { pNewData[i] = NULL; } delete m_pPtrArray; m_uiArraySize = 2 * m_uiArraySize; m_pPtrArray = pNewData; } */ VOID LIDmap::ExpandArray(LID lid) { ASSERT(m_uiArraySize > 0); ASSERT(lid > m_uiArraySize); VOID **pNewData; pNewData = new VOID * [lid]; UINT_32 i; for (i = 0; i < m_uiArraySize; i++) { pNewData[i] = m_pPtrArray[i]; } for (i = m_uiArraySize; i < lid; i++) { pNewData[i] = NULL; } delete m_pPtrArray; m_uiArraySize = lid; m_pPtrArray = pNewData; }