75 lines
1.8 KiB
C++
Executable File
75 lines
1.8 KiB
C++
Executable File
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
// Copyright (C) GarageGames.com, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#include "core/tVector.h"
|
|
|
|
#ifdef TORQUE_DEBUG_GUARD
|
|
bool VectorResize(U32 *aSize, U32 *aCount, void **arrayPtr, U32 newCount, U32 elemSize,
|
|
const char* fileName,
|
|
const U32 lineNum)
|
|
{
|
|
if (newCount > 0) {
|
|
U32 blocks = newCount / VectorBlockSize;
|
|
if (newCount % VectorBlockSize)
|
|
blocks++;
|
|
S32 mem_size = blocks * VectorBlockSize * elemSize;
|
|
|
|
if (*arrayPtr != NULL)
|
|
{
|
|
*arrayPtr = dRealloc(*arrayPtr,mem_size);
|
|
}
|
|
else
|
|
{
|
|
const char* pUseFileName = fileName != NULL ? fileName : __FILE__;
|
|
U32 useLineNum = fileName != NULL ? lineNum : __LINE__;
|
|
*arrayPtr = dMalloc_r(mem_size, pUseFileName, useLineNum);
|
|
}
|
|
|
|
*aCount = newCount;
|
|
*aSize = blocks * VectorBlockSize;
|
|
return true;
|
|
}
|
|
|
|
if (*arrayPtr) {
|
|
dFree(*arrayPtr);
|
|
*arrayPtr = 0;
|
|
}
|
|
|
|
*aSize = 0;
|
|
*aCount = 0;
|
|
return true;
|
|
}
|
|
|
|
#else
|
|
|
|
bool VectorResize(U32 *aSize, U32 *aCount, void **arrayPtr, U32 newCount, U32 elemSize)
|
|
{
|
|
if (newCount > 0)
|
|
{
|
|
U32 blocks = newCount / VectorBlockSize;
|
|
if (newCount % VectorBlockSize)
|
|
blocks++;
|
|
S32 mem_size = blocks * VectorBlockSize * elemSize;
|
|
*arrayPtr = *arrayPtr ? dRealloc(*arrayPtr,mem_size) :
|
|
dMalloc(mem_size);
|
|
|
|
*aCount = newCount;
|
|
*aSize = blocks * VectorBlockSize;
|
|
return true;
|
|
}
|
|
|
|
if (*arrayPtr)
|
|
{
|
|
dFree(*arrayPtr);
|
|
*arrayPtr = 0;
|
|
}
|
|
|
|
*aSize = 0;
|
|
*aCount = 0;
|
|
return true;
|
|
}
|
|
|
|
#endif
|