mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-05-11 01:58:22 +08:00
Coding - Implement move semantics and default constructor for CSLib_Class2d (#919)
- Added a default constructor to CSLib_Class2d for creating empty classifiers. - Implemented move constructor and move assignment operator to optimize resource management. - Updated IntTools_FClass2d and BRepTopAdaptor_FClass2d to utilize the new move semantics, eliminating unnecessary dynamic memory allocations. - Replaced deprecated pointer-based storage with NCollection_Sequence for better memory management. - Removed the obsolete BRepTopAdaptor_SeqOfPtr class to streamline the codebase.
This commit is contained in:
@@ -404,7 +404,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, const Standard_Real TolUV
|
||||
gp_Pnt2d anInitPnt(0., 0.);
|
||||
//
|
||||
PClass.Init(anInitPnt);
|
||||
TabClass.Append((void*)new CSLib_Class2d(PClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
TabClass.Append(CSLib_Class2d(PClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
BadWire = 1;
|
||||
TabOrien.Append(-1);
|
||||
}
|
||||
@@ -506,8 +506,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, const Standard_Real TolUV
|
||||
if (FlecheV < Toluv)
|
||||
FlecheV = Toluv;
|
||||
|
||||
TabClass.Append(
|
||||
(void*)new CSLib_Class2d(SeqPnt2d, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
TabClass.Append(CSLib_Class2d(SeqPnt2d, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
//
|
||||
if (std::abs(aS) < Precision::SquareConfusion())
|
||||
{
|
||||
@@ -534,8 +533,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, const Standard_Real TolUV
|
||||
TabOrien.Append(-1);
|
||||
TColgp_Array1OfPnt2d PPClass(1, 2);
|
||||
SeqPnt2d.Clear();
|
||||
TabClass.Append(
|
||||
(void*)new CSLib_Class2d(SeqPnt2d, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
TabClass.Append(CSLib_Class2d(SeqPnt2d, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
}
|
||||
} // else if(WireIsNotEmpty)
|
||||
} // for(; aExpF.More(); aExpF.Next()) {
|
||||
@@ -649,7 +647,7 @@ TopAbs_State IntTools_FClass2d::Perform(const gp_Pnt2d& _Puv,
|
||||
Standard_Integer n, cur, TabOrien_n;
|
||||
for (n = 1; n <= nbtabclass; n++)
|
||||
{
|
||||
cur = ((CSLib_Class2d*)TabClass(n))->SiDans(Puv);
|
||||
cur = TabClass(n).SiDans(Puv);
|
||||
TabOrien_n = TabOrien(n);
|
||||
|
||||
if (cur == 1)
|
||||
@@ -809,7 +807,7 @@ TopAbs_State IntTools_FClass2d::TestOnRestriction(const gp_Pnt2d& _Puv,
|
||||
{
|
||||
for (Standard_Integer n = 1; n <= nbtabclass; n++)
|
||||
{
|
||||
Standard_Integer cur = ((CSLib_Class2d*)TabClass(n))->SiDans_OnMode(Puv, Tol);
|
||||
Standard_Integer cur = TabClass(n).SiDans_OnMode(Puv, Tol);
|
||||
if (cur == 1)
|
||||
{
|
||||
if (TabOrien(n) == 0)
|
||||
@@ -890,13 +888,5 @@ TopAbs_State IntTools_FClass2d::TestOnRestriction(const gp_Pnt2d& _Puv,
|
||||
|
||||
IntTools_FClass2d::~IntTools_FClass2d()
|
||||
{
|
||||
Standard_Integer nbtabclass = TabClass.Length();
|
||||
for (Standard_Integer d = 1; d <= nbtabclass; d++)
|
||||
{
|
||||
if (TabClass(d))
|
||||
{
|
||||
delete ((CSLib_Class2d*)TabClass(d));
|
||||
TabClass(d) = NULL;
|
||||
}
|
||||
}
|
||||
TabClass.Clear();
|
||||
}
|
||||
|
||||
@@ -22,10 +22,12 @@
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <BRepClass_FaceExplorer.hxx>
|
||||
#include <BRepTopAdaptor_SeqOfPtr.hxx>
|
||||
#include <CSLib_Class2d.hxx>
|
||||
#include <NCollection_Sequence.hxx>
|
||||
#include <TColStd_SequenceOfInteger.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopAbs_State.hxx>
|
||||
|
||||
#include <memory>
|
||||
|
||||
class gp_Pnt2d;
|
||||
@@ -72,19 +74,19 @@ public:
|
||||
Standard_EXPORT Standard_Boolean IsHole() const;
|
||||
|
||||
private:
|
||||
BRepTopAdaptor_SeqOfPtr TabClass;
|
||||
TColStd_SequenceOfInteger TabOrien;
|
||||
Standard_Real Toluv;
|
||||
TopoDS_Face Face;
|
||||
Standard_Real U1;
|
||||
Standard_Real V1;
|
||||
Standard_Real U2;
|
||||
Standard_Real V2;
|
||||
Standard_Real Umin;
|
||||
Standard_Real Umax;
|
||||
Standard_Real Vmin;
|
||||
Standard_Real Vmax;
|
||||
Standard_Boolean myIsHole;
|
||||
NCollection_Sequence<CSLib_Class2d> TabClass;
|
||||
TColStd_SequenceOfInteger TabOrien;
|
||||
Standard_Real Toluv;
|
||||
TopoDS_Face Face;
|
||||
Standard_Real U1;
|
||||
Standard_Real V1;
|
||||
Standard_Real U2;
|
||||
Standard_Real V2;
|
||||
Standard_Real Umin;
|
||||
Standard_Real Umax;
|
||||
Standard_Real Vmin;
|
||||
Standard_Real Vmax;
|
||||
Standard_Boolean myIsHole;
|
||||
|
||||
mutable std::unique_ptr<BRepClass_FaceExplorer> myFExplorer;
|
||||
};
|
||||
|
||||
@@ -265,7 +265,7 @@ BRepTopAdaptor_FClass2d::BRepTopAdaptor_FClass2d(const TopoDS_Face& aFace,
|
||||
//// modified by jgv, 28.04.2009 ////
|
||||
PClass.Init(gp_Pnt2d(0., 0.));
|
||||
/////////////////////////////////////
|
||||
TabClass.Append((void*)new CSLib_Class2d(PClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
TabClass.Append(CSLib_Class2d(PClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
anIsBadWire = true;
|
||||
TabOrien.Append(-1);
|
||||
}
|
||||
@@ -406,7 +406,7 @@ BRepTopAdaptor_FClass2d::BRepTopAdaptor_FClass2d(const TopoDS_Face& aFace,
|
||||
FlecheU = Toluv;
|
||||
if (FlecheV < Toluv)
|
||||
FlecheV = Toluv;
|
||||
TabClass.Append((void*)new CSLib_Class2d(PClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
TabClass.Append(CSLib_Class2d(PClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
} // if(nbpoints>3
|
||||
else
|
||||
{
|
||||
@@ -415,8 +415,7 @@ BRepTopAdaptor_FClass2d::BRepTopAdaptor_FClass2d(const TopoDS_Face& aFace,
|
||||
TColgp_Array1OfPnt2d xPClass(1, 2);
|
||||
xPClass(1) = SeqPnt2d(1);
|
||||
xPClass(2) = SeqPnt2d(2);
|
||||
TabClass.Append(
|
||||
(void*)new CSLib_Class2d(xPClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
TabClass.Append(CSLib_Class2d(xPClass, FlecheU, FlecheV, Umin, Vmin, Umax, Vmax));
|
||||
}
|
||||
} // else if(WareIsNotEmpty
|
||||
} // for(FaceExplorer
|
||||
@@ -532,7 +531,7 @@ TopAbs_State BRepTopAdaptor_FClass2d::Perform(const gp_Pnt2d& _Puv,
|
||||
{
|
||||
for (Standard_Integer n = 1; n <= nbtabclass; n++)
|
||||
{
|
||||
Standard_Integer cur = ((CSLib_Class2d*)TabClass(n))->SiDans(Puv);
|
||||
Standard_Integer cur = TabClass(n).SiDans(Puv);
|
||||
if (cur == 1)
|
||||
{
|
||||
if (TabOrien(n) == 0)
|
||||
@@ -673,7 +672,7 @@ TopAbs_State BRepTopAdaptor_FClass2d::TestOnRestriction(
|
||||
{
|
||||
for (Standard_Integer n = 1; n <= nbtabclass; n++)
|
||||
{
|
||||
Standard_Integer cur = ((CSLib_Class2d*)TabClass(n))->SiDans_OnMode(Puv, Tol);
|
||||
Standard_Integer cur = TabClass(n).SiDans_OnMode(Puv, Tol);
|
||||
if (cur == 1)
|
||||
{
|
||||
if (TabOrien(n) == 0)
|
||||
@@ -748,15 +747,7 @@ TopAbs_State BRepTopAdaptor_FClass2d::TestOnRestriction(
|
||||
|
||||
void BRepTopAdaptor_FClass2d::Destroy()
|
||||
{
|
||||
Standard_Integer nbtabclass = TabClass.Length();
|
||||
for (Standard_Integer d = 1; d <= nbtabclass; d++)
|
||||
{
|
||||
if (TabClass(d))
|
||||
{
|
||||
delete ((CSLib_Class2d*)TabClass(d));
|
||||
TabClass(d) = NULL;
|
||||
}
|
||||
}
|
||||
TabClass.Clear();
|
||||
}
|
||||
|
||||
#include <Standard_ConstructionError.hxx>
|
||||
|
||||
@@ -20,10 +20,12 @@
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
|
||||
#include <BRepTopAdaptor_SeqOfPtr.hxx>
|
||||
#include <CSLib_Class2d.hxx>
|
||||
#include <NCollection_Sequence.hxx>
|
||||
#include <TColStd_SequenceOfInteger.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopAbs_State.hxx>
|
||||
|
||||
class gp_Pnt2d;
|
||||
|
||||
class BRepTopAdaptor_FClass2d
|
||||
@@ -57,20 +59,19 @@ public:
|
||||
const Standard_Real Tol,
|
||||
const Standard_Boolean RecadreOnPeriodic = Standard_True) const;
|
||||
|
||||
protected:
|
||||
private:
|
||||
BRepTopAdaptor_SeqOfPtr TabClass;
|
||||
TColStd_SequenceOfInteger TabOrien;
|
||||
Standard_Real Toluv;
|
||||
TopoDS_Face Face;
|
||||
Standard_Real U1;
|
||||
Standard_Real V1;
|
||||
Standard_Real U2;
|
||||
Standard_Real V2;
|
||||
Standard_Real Umin;
|
||||
Standard_Real Umax;
|
||||
Standard_Real Vmin;
|
||||
Standard_Real Vmax;
|
||||
NCollection_Sequence<CSLib_Class2d> TabClass;
|
||||
TColStd_SequenceOfInteger TabOrien;
|
||||
Standard_Real Toluv;
|
||||
TopoDS_Face Face;
|
||||
Standard_Real U1;
|
||||
Standard_Real V1;
|
||||
Standard_Real U2;
|
||||
Standard_Real V2;
|
||||
Standard_Real Umin;
|
||||
Standard_Real Umax;
|
||||
Standard_Real Vmin;
|
||||
Standard_Real Vmax;
|
||||
};
|
||||
|
||||
#endif // _BRepTopAdaptor_FClass2d_HeaderFile
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
// Created on: 1994-04-01
|
||||
// Created by: Modelistation
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 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.
|
||||
|
||||
#ifndef _BRepTopAdaptor_SeqOfPtr_HeaderFile
|
||||
#define _BRepTopAdaptor_SeqOfPtr_HeaderFile
|
||||
|
||||
#include <TColStd_SequenceOfAddress.hxx>
|
||||
|
||||
typedef TColStd_SequenceOfAddress BRepTopAdaptor_SeqOfPtr;
|
||||
|
||||
#endif // _BRepTopAdaptor_SeqOfPtr_HeaderFile
|
||||
@@ -9,7 +9,6 @@ set(OCCT_BRepTopAdaptor_FILES
|
||||
BRepTopAdaptor_HVertex.hxx
|
||||
BRepTopAdaptor_HVertex.lxx
|
||||
BRepTopAdaptor_MapOfShapeTool.hxx
|
||||
BRepTopAdaptor_SeqOfPtr.hxx
|
||||
BRepTopAdaptor_Tool.cxx
|
||||
BRepTopAdaptor_Tool.hxx
|
||||
BRepTopAdaptor_TopolTool.cxx
|
||||
|
||||
Reference in New Issue
Block a user