Skip to content

Commit fb6ac6c

Browse files
alxbilgerbakpaul
andauthored
[Lagrangian.Solver] Replace raw pointers by unique_ptr for GenericConstraintProblem (#5843)
Co-authored-by: Paul Baksic <30337881+bakpaul@users.noreply.github.com>
1 parent 188f7f0 commit fb6ac6c

File tree

3 files changed

+8
-19
lines changed

3 files changed

+8
-19
lines changed

Sofa/Component/Constraint/Lagrangian/Solver/src/sofa/component/constraint/lagrangian/solver/GenericConstraintSolver.cpp

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,6 @@ GenericConstraintSolver::GenericConstraintSolver()
112112
d_tolerance.setRequired(true);
113113
}
114114

115-
GenericConstraintSolver::~GenericConstraintSolver()
116-
{
117-
for (unsigned i=0; i< CP_BUFFER_SIZE; ++i)
118-
{
119-
delete m_cpBuffer[i];
120-
}
121-
}
122-
123-
124-
125115
void GenericConstraintSolver:: init()
126116
{
127117
this->initializeConstraintProblems();
@@ -144,9 +134,9 @@ void GenericConstraintSolver::initializeConstraintProblems()
144134
{
145135
for (unsigned i=0; i< CP_BUFFER_SIZE; ++i)
146136
{
147-
m_cpBuffer[i] = new GenericConstraintProblem(this);
137+
m_cpBuffer[i] = std::make_unique<GenericConstraintProblem>(this);
148138
}
149-
current_cp = m_cpBuffer[0];
139+
current_cp = m_cpBuffer[0].get();
150140
}
151141

152142
void GenericConstraintSolver::cleanup()
@@ -414,7 +404,7 @@ void GenericConstraintSolver::lockConstraintProblem(sofa::core::objectmodel::Bas
414404

415405
for (unsigned int i = 0; i < CP_BUFFER_SIZE; ++i)
416406
{
417-
GenericConstraintProblem* p = m_cpBuffer[i];
407+
GenericConstraintProblem* p = m_cpBuffer[i].get();
418408
if (p == p1 || p == p2)
419409
{
420410
m_cpIsLocked[i] = true;

Sofa/Component/Constraint/Lagrangian/Solver/src/sofa/component/constraint/lagrangian/solver/GenericConstraintSolver.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class SOFA_COMPONENT_CONSTRAINT_LAGRANGIAN_SOLVER_API GenericConstraintSolver :
4545
SOFA_CLASS(GenericConstraintSolver, ConstraintSolverImpl);
4646
protected:
4747
GenericConstraintSolver();
48-
~GenericConstraintSolver() override;
4948
public:
5049
void init() override;
5150

@@ -89,8 +88,8 @@ class SOFA_COMPONENT_CONSTRAINT_LAGRANGIAN_SOLVER_API GenericConstraintSolver :
8988
void clearConstraintProblemLocks();
9089

9190
static constexpr auto CP_BUFFER_SIZE = 10;
92-
sofa::type::fixed_array<GenericConstraintProblem * , CP_BUFFER_SIZE> m_cpBuffer;
93-
sofa::type::fixed_array<bool, CP_BUFFER_SIZE> m_cpIsLocked;
91+
sofa::type::fixed_array<std::unique_ptr<GenericConstraintProblem>, CP_BUFFER_SIZE> m_cpBuffer;
92+
sofa::type::fixed_array<bool, CP_BUFFER_SIZE> m_cpIsLocked = sofa::type::makeHomogeneousArray<bool, CP_BUFFER_SIZE>(false);
9493
GenericConstraintProblem *current_cp, *last_cp;
9594

9695
sofa::core::MultiVecDerivId m_lambdaId;

Sofa/Component/Constraint/Lagrangian/Solver/src/sofa/component/constraint/lagrangian/solver/UnbuiltConstraintSolver.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ void UnbuiltConstraintSolver::initializeConstraintProblems()
9797
{
9898
for (unsigned i=0; i< CP_BUFFER_SIZE; ++i)
9999
{
100-
m_cpBuffer[i] = new UnbuiltConstraintProblem(this);
100+
m_cpBuffer[i] = std::make_unique<UnbuiltConstraintProblem>(this);
101101
}
102-
current_cp = m_cpBuffer[0];
102+
current_cp = m_cpBuffer[0].get();
103103
}
104104

105105

106-
}
106+
}

0 commit comments

Comments
 (0)