mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-08-17 09:24:31 +08:00
6c24544fe1
- Refactor boolean expressions and improve code readability across multiple files - Simplified boolean expressions by removing unnecessary comparisons to true/false. - Replaced explicit boolean checks with direct variable usage Used flags: readability-static-accessed-through-instance readability-simplify-boolean-expr performance-for-range-copy performance-move-const-arg misc-unused-parameters misc-redundant-expression
138 lines
4.0 KiB
C++
138 lines
4.0 KiB
C++
// Copyright (c) 2023 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#include <NCollection_BasePointerVector.hxx>
|
|
|
|
#include <cstring>
|
|
|
|
//=================================================================================================
|
|
|
|
NCollection_BasePointerVector::NCollection_BasePointerVector(
|
|
const NCollection_BasePointerVector& theOther)
|
|
: mySize(theOther.mySize),
|
|
myCapacity(theOther.myCapacity)
|
|
{
|
|
if (myCapacity > 0)
|
|
{
|
|
myArray = myAllocator.allocate(myCapacity);
|
|
memcpy(myArray, theOther.myArray, Size() * sizeof(void*));
|
|
}
|
|
}
|
|
|
|
//=================================================================================================
|
|
|
|
NCollection_BasePointerVector::NCollection_BasePointerVector(
|
|
NCollection_BasePointerVector&& theOther) noexcept
|
|
: mySize(theOther.mySize),
|
|
myCapacity(theOther.myCapacity),
|
|
myArray(theOther.myArray)
|
|
{
|
|
theOther.myCapacity = 0;
|
|
theOther.mySize = 0;
|
|
theOther.myArray = nullptr;
|
|
}
|
|
|
|
//=================================================================================================
|
|
|
|
void NCollection_BasePointerVector::Append(const void* thePnt)
|
|
{
|
|
if (mySize == myCapacity)
|
|
{
|
|
if (myCapacity == 0)
|
|
{
|
|
myCapacity = 8; // the most optimal initial value
|
|
}
|
|
else
|
|
{
|
|
myCapacity <<= 1;
|
|
}
|
|
myArray = myAllocator.reallocate(myArray, myCapacity);
|
|
}
|
|
myArray[mySize++] = (void*)thePnt;
|
|
}
|
|
|
|
//=================================================================================================
|
|
|
|
void NCollection_BasePointerVector::SetValue(const size_t theInd, const void* thePnt)
|
|
{
|
|
if (theInd >= myCapacity)
|
|
{
|
|
if (myCapacity == 0)
|
|
{
|
|
myCapacity = 8; // the most optimal initial value
|
|
}
|
|
while (myCapacity < theInd)
|
|
{
|
|
myCapacity <<= 1;
|
|
}
|
|
myArray = myAllocator.reallocate(myArray, myCapacity);
|
|
memset(myArray + mySize, 0, (theInd - mySize) * sizeof(void**));
|
|
mySize = theInd;
|
|
}
|
|
myArray[theInd] = (void*)thePnt;
|
|
}
|
|
|
|
//=================================================================================================
|
|
|
|
void NCollection_BasePointerVector::clear()
|
|
{
|
|
if (myCapacity > 0)
|
|
{
|
|
myAllocator.deallocate(myArray, myCapacity);
|
|
}
|
|
myArray = nullptr;
|
|
myCapacity = 0;
|
|
}
|
|
|
|
//=======================================================================
|
|
// function : operator=
|
|
// purpose :
|
|
//=======================================================================
|
|
NCollection_BasePointerVector& NCollection_BasePointerVector::operator=(
|
|
const NCollection_BasePointerVector& theOther)
|
|
{
|
|
if (this == &theOther)
|
|
{
|
|
return *this;
|
|
}
|
|
mySize = theOther.mySize;
|
|
if (myCapacity < theOther.myCapacity)
|
|
{
|
|
clear();
|
|
myCapacity = theOther.myCapacity;
|
|
myArray = myAllocator.allocate(myCapacity);
|
|
}
|
|
memcpy(myArray, theOther.myArray, mySize * sizeof(void*));
|
|
return *this;
|
|
}
|
|
|
|
//=======================================================================
|
|
// function : operator=
|
|
// purpose :
|
|
//=======================================================================
|
|
NCollection_BasePointerVector& NCollection_BasePointerVector::operator=(
|
|
NCollection_BasePointerVector&& theOther) noexcept
|
|
{
|
|
if (this == &theOther)
|
|
{
|
|
return *this;
|
|
}
|
|
clear();
|
|
mySize = theOther.mySize;
|
|
myCapacity = theOther.myCapacity;
|
|
myArray = theOther.myArray;
|
|
theOther.myCapacity = 0;
|
|
theOther.mySize = 0;
|
|
theOther.myArray = nullptr;
|
|
return *this;
|
|
} |