Skip to content

Commit

Permalink
STYLE: Use unique_ptr for OrthogonalSwath2DPathFilter data members
Browse files Browse the repository at this point in the history
Also "defaulted" both its default-constructor and its destructor. Made use of
modern C++ in-class data member initialization.

Follow-up to pull request #2897
commit 3c6f298
"STYLE: Use `unique_ptr` for `ImageToImageMetric` data members"
  • Loading branch information
N-Dekker authored and dzenanz committed Aug 24, 2022
1 parent 8fa2e4f commit 7c4dae8
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 47 deletions.
22 changes: 12 additions & 10 deletions Modules/Filtering/Path/include/itkOrthogonalSwath2DPathFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
#include "itkPathAndImageToPathFilter.h"
#include "itkOrthogonallyCorrected2DParametricPath.h"

#include <memory> // For unique_ptr.

namespace itk
{
/**
Expand Down Expand Up @@ -87,8 +89,8 @@ class ITK_TEMPLATE_EXPORT OrthogonalSwath2DPathFilter
using SizeType = typename ImageType::SizeType;

protected:
OrthogonalSwath2DPathFilter();
~OrthogonalSwath2DPathFilter() override;
OrthogonalSwath2DPathFilter() = default;
~OrthogonalSwath2DPathFilter() override = default;
void
PrintSelf(std::ostream & os, Indent indent) const override;

Expand Down Expand Up @@ -131,16 +133,16 @@ class ITK_TEMPLATE_EXPORT OrthogonalSwath2DPathFilter
return m_MeritValues[(x * rows * rows) + (f * rows) + (l)];
}

int * m_StepValues; // best y=error coordinate @ x of image for (0,F) ->
// (x+1,L)
double * m_MeritValues;
std::unique_ptr<int[]> m_StepValues{ nullptr }; // best y=error coordinate @ x of image for (0,F) ->
// (x+1,L)
std::unique_ptr<double[]> m_MeritValues{ nullptr };

int * m_OptimumStepsValues; // best step (e value)
// sequence for a
// closed path
OrthogonalCorrectionTablePointer m_FinalOffsetValues;
std::unique_ptr<int[]> m_OptimumStepsValues{ nullptr }; // best step (e value)
// sequence for a
// closed path
OrthogonalCorrectionTablePointer m_FinalOffsetValues{ OrthogonalCorrectionTableType::New() };

SizeType m_SwathSize;
SizeType m_SwathSize{ { 0 } };
};
} // end namespace itk

Expand Down
43 changes: 6 additions & 37 deletions Modules/Filtering/Path/include/itkOrthogonalSwath2DPathFilter.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -23,34 +23,6 @@

namespace itk
{
/**
* Constructor
*/
template <typename TParametricPath, typename TSwathMeritImage>
OrthogonalSwath2DPathFilter<TParametricPath, TSwathMeritImage>::OrthogonalSwath2DPathFilter()
{
SizeType size;

// Initialize the member variables
size[0] = 0;
size[1] = 0;
m_SwathSize = size;
m_StepValues = nullptr;
m_MeritValues = nullptr;
m_OptimumStepsValues = nullptr;
m_FinalOffsetValues = OrthogonalCorrectionTableType::New();
}

/**
* Destructor
*/
template <typename TParametricPath, typename TSwathMeritImage>
OrthogonalSwath2DPathFilter<TParametricPath, TSwathMeritImage>::~OrthogonalSwath2DPathFilter()
{
delete[] m_StepValues;
delete[] m_MeritValues;
delete[] m_OptimumStepsValues;
}

/**
* GenerateData Performs the reflection
Expand All @@ -64,12 +36,9 @@ OrthogonalSwath2DPathFilter<TParametricPath, TSwathMeritImage>::GenerateData()

// Re-initialize the member variables
m_SwathSize = swathMeritImage->GetLargestPossibleRegion().GetSize();
delete[] m_StepValues;
delete[] m_MeritValues;
delete[] m_OptimumStepsValues;
m_StepValues = new int[m_SwathSize[0] * m_SwathSize[1] * m_SwathSize[1]];
m_MeritValues = new double[m_SwathSize[0] * m_SwathSize[1] * m_SwathSize[1]];
m_OptimumStepsValues = new int[m_SwathSize[0]];
m_StepValues.reset(new int[m_SwathSize[0] * m_SwathSize[1] * m_SwathSize[1]]);
m_MeritValues.reset(new double[m_SwathSize[0] * m_SwathSize[1] * m_SwathSize[1]]);
m_OptimumStepsValues.reset(new int[m_SwathSize[0]]);
m_FinalOffsetValues->Initialize();

// Perform the remaining calculations; use dynamic programming
Expand Down Expand Up @@ -196,9 +165,9 @@ void
OrthogonalSwath2DPathFilter<TParametricPath, TSwathMeritImage>::PrintSelf(std::ostream & os, Indent indent) const
{
Superclass::PrintSelf(os, indent);
os << indent << "StepValues: " << m_StepValues << std::endl;
os << indent << "MeritValues: " << m_MeritValues << std::endl;
os << indent << "OptimumStepsValues: " << m_OptimumStepsValues << std::endl;
os << indent << "StepValues: " << m_StepValues.get() << std::endl;
os << indent << "MeritValues: " << m_MeritValues.get() << std::endl;
os << indent << "OptimumStepsValues: " << m_OptimumStepsValues.get() << std::endl;
os << indent << "FinalOffsetValues: " << m_FinalOffsetValues << std::endl;
}

Expand Down

0 comments on commit 7c4dae8

Please sign in to comment.