void CFX_BaseSegmentedArray::RemoveAll() { if (!m_pIndex) { return; } _ClearIndex(m_IndexDepth, m_IndexSize, (void**)m_pIndex); m_pIndex = NULL; m_IndexDepth = 0; m_DataSize = 0; }
static void _ClearIndex(int level, int size, void** pIndex) { if (level == 0) { FX_Free(pIndex); return; } for (int i = 0; i < size; ++i) { if (pIndex[i]) _ClearIndex(level - 1, size, (void**)pIndex[i]); } FX_Free(pIndex); }
static void _ClearIndex(IFX_Allocator* pAllcator, int level, int size, void** pIndex) { if (level == 0) { FX_Allocator_Free(pAllcator, pIndex); return; } for (int i = 0; i < size; i ++) { if (pIndex[i] == NULL) { continue; } _ClearIndex(pAllcator, level - 1, size, (void**)pIndex[i]); } FX_Allocator_Free(pAllcator, pIndex); }