void NCollection_BaseVector::Clear()
{
- for (Standard_Integer i = 0; i < myCapacity; i++)
- myData[i].Reinit (0, 0);
- myLength = 0;
- myNBlocks = 0;
+ if (myLength > 0) {
+ for (Standard_Integer i = 0; i < myCapacity; i++)
+ myData[i].Reinit (0, 0);
+ myLength = 0;
+ myNBlocks = 0;
+ }
}
//=======================================================================
for (Standard_Integer i = 0; i < myCapacity; i++)
myData[i].Reinit (0, 0);
myDataFree (* this, myData);
- myCapacity = myIncrement + myLength / myIncrement;
+ myCapacity = GetCapacity(myIncrement) + myLength / myIncrement;
myData = myDataInit (* this, myCapacity, NULL, 0);
// }
return * this;
myNBlocks + 1 + (theIndex - myLength) / myIncrement;
if (myCapacity < nNewBlock) {
// Reallocate the array myData
- do myCapacity += myIncrement; while (myCapacity <= nNewBlock);
+ do myCapacity += GetCapacity(myIncrement); while (myCapacity <= nNewBlock);
MemBlock * aNewData = myDataInit (* this, myCapacity, myData, myNBlocks);
myDataFree (* this, myData);
myData = aNewData;