Skip to content

Commit da9ecbb

Browse files
N-Dekkerhjmjohnson
authored andcommitted
STYLE: MultiTransform iterate over m_TransformQueue by range-based for
Simplified the implementation of `MultiTransform` member functions, by using range-based `for` loops to iterate over its `m_TransformQueue` data member.
1 parent 9a2379f commit da9ecbb

File tree

1 file changed

+23
-40
lines changed

1 file changed

+23
-40
lines changed

Modules/Core/Transform/include/itkMultiTransform.hxx

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,15 @@ MultiTransform<TParametersValueType, VDimension, VSubDimensions>::GetParameters(
7474
/* Resize destructively. But if it's already this size, nothing is done so
7575
* it's efficient. */
7676
this->m_Parameters.SetSize(this->GetNumberOfParameters());
77-
NumberOfParametersType offset{};
78-
TransformQueueType transforms = this->GetTransformQueue();
79-
typename TransformQueueType::const_iterator it;
80-
it = transforms.begin();
77+
NumberOfParametersType offset{};
8178

82-
do
79+
for (const TransformType * const transform : m_TransformQueue)
8380
{
84-
const ParametersType & subParameters = (*it)->GetParameters();
81+
const ParametersType & subParameters = transform->GetParameters();
8582
/* use vnl_vector data_block() to get data ptr */
8683
std::copy_n(subParameters.data_block(), subParameters.Size(), &(this->m_Parameters.data_block())[offset]);
8784
offset += subParameters.Size();
88-
++it;
89-
} while (it != transforms.end());
85+
}
9086

9187
return this->m_Parameters;
9288
}
@@ -109,11 +105,9 @@ MultiTransform<TParametersValueType, VDimension, VSubDimensions>::SetParameters(
109105
<< this->GetNumberOfParameters() << '.');
110106
}
111107

112-
TransformQueueType transforms = this->GetTransformQueue();
113108
NumberOfParametersType offset{};
114-
auto it = transforms.begin();
115109

116-
do
110+
for (TransformType * const transform : m_TransformQueue)
117111
{
118112
/* If inputParams is same object as m_Parameters, we just pass
119113
* each sub-transforms own m_Parameters in. This is needed to
@@ -122,17 +116,16 @@ MultiTransform<TParametersValueType, VDimension, VSubDimensions>::SetParameters(
122116
* parameters to update member variable states. A hack. */
123117
if (&inputParameters == &this->m_Parameters)
124118
{
125-
(*it)->SetParameters((*it)->GetParameters());
119+
transform->SetParameters(transform->GetParameters());
126120
}
127121
else
128122
{
129-
const size_t parameterSize = (*it)->GetParameters().Size();
130-
(*it)->CopyInParameters(&(inputParameters.data_block())[offset],
131-
&(inputParameters.data_block())[offset] + parameterSize);
123+
const size_t parameterSize = transform->GetParameters().Size();
124+
transform->CopyInParameters(&(inputParameters.data_block())[offset],
125+
&(inputParameters.data_block())[offset] + parameterSize);
132126
offset += static_cast<NumberOfParametersType>(parameterSize);
133127
}
134-
++it;
135-
} while (it != transforms.end());
128+
}
136129
}
137130

138131

@@ -145,20 +138,16 @@ MultiTransform<TParametersValueType, VDimension, VSubDimensions>::GetFixedParame
145138
* it's efficient. */
146139
this->m_FixedParameters.SetSize(this->GetNumberOfFixedParameters());
147140

148-
NumberOfParametersType offset{};
149-
typename TransformQueueType::const_iterator it;
150-
TransformQueueType transforms = this->GetTransformQueue();
151-
it = transforms.begin();
141+
NumberOfParametersType offset{};
152142

153-
do
143+
for (const TransformType * const transform : m_TransformQueue)
154144
{
155-
const FixedParametersType & subFixedParameters = (*it)->GetFixedParameters();
145+
const FixedParametersType & subFixedParameters = transform->GetFixedParameters();
156146
/* use vnl_vector data_block() to get data ptr */
157147
std::copy_n(
158148
subFixedParameters.data_block(), subFixedParameters.Size(), &(this->m_FixedParameters.data_block())[offset]);
159149
offset += subFixedParameters.Size();
160-
++it;
161-
} while (it != transforms.end());
150+
}
162151

163152
return this->m_FixedParameters;
164153
}
@@ -178,21 +167,18 @@ MultiTransform<TParametersValueType, VDimension, VSubDimensions>::SetFixedParame
178167

179168
/* Assumes input params are concatenation of the parameters of the
180169
* sub transforms. */
181-
TransformQueueType transforms = this->GetTransformQueue();
182170
NumberOfParametersType offset{};
183171

184172
/* Why is this done? Seems unnecessary. */
185173
this->m_FixedParameters = inputParameters;
186174

187-
auto it = transforms.begin();
188-
do
175+
for (TransformType * const transform : m_TransformQueue)
189176
{
190-
const size_t fixedParameterSize = (*it)->GetFixedParameters().Size();
191-
(*it)->CopyInFixedParameters(&(this->m_FixedParameters.data_block())[offset],
192-
&(this->m_FixedParameters.data_block())[offset] + fixedParameterSize);
177+
const size_t fixedParameterSize = transform->GetFixedParameters().Size();
178+
transform->CopyInFixedParameters(&(this->m_FixedParameters.data_block())[offset],
179+
&(this->m_FixedParameters.data_block())[offset] + fixedParameterSize);
193180
offset += static_cast<NumberOfParametersType>(fixedParameterSize);
194-
++it;
195-
} while (it != transforms.end());
181+
}
196182
}
197183

198184

@@ -318,15 +304,13 @@ template <typename TParametersValueType, unsigned int VDimension, unsigned int V
318304
bool
319305
MultiTransform<TParametersValueType, VDimension, VSubDimensions>::GetInverse(Self * inverse) const
320306
{
321-
typename TransformQueueType::const_iterator it;
322-
323307
// NOTE: MultiTransform delegates to
324308
// individual transform for setting FixedParameters
325309
// inverse->SetFixedParameters( this->GetFixedParameters() );
326310
inverse->ClearTransformQueue();
327-
for (it = this->m_TransformQueue.begin(); it != this->m_TransformQueue.end(); ++it)
311+
for (const TransformType * const transform : m_TransformQueue)
328312
{
329-
TransformTypePointer inverseTransform = ((*it)->GetInverseTransform()).GetPointer();
313+
TransformTypePointer inverseTransform = (transform->GetInverseTransform()).GetPointer();
330314
if (!inverseTransform)
331315
{
332316
inverse->ClearTransformQueue();
@@ -350,11 +334,10 @@ MultiTransform<TParametersValueType, VDimension, VSubDimensions>::PrintSelf(std:
350334
Superclass::PrintSelf(os, indent);
351335

352336
os << indent << "TransformQueue: " << std::endl;
353-
typename TransformQueueType::const_iterator cit;
354-
for (cit = this->m_TransformQueue.begin(); cit != this->m_TransformQueue.end(); ++cit)
337+
for (const TransformType * const transform : m_TransformQueue)
355338
{
356339
os << indent << ">>>>>>>>>" << std::endl;
357-
(*cit)->Print(os, indent);
340+
transform->Print(os, indent);
358341
}
359342
}
360343

0 commit comments

Comments
 (0)