From c4f4c5f17e5cee41a0e87356cd4c8dd6beff319e Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 15 Dec 2025 22:16:01 +0100 Subject: [PATCH 1/2] STYLE: Use `MultiThreaderBase` directly, instead of `MultiThreaderType` `ProcessObject::MultiThreaderType` and `ImageToImageMetric::MultiThreaderType` are always just aliases of `itk::MultiThreaderBase`, the common base class of PlatformMultiThreader, PoolMultiThreader, and TBBMultiThreader. So it appears clearer to just use MultiThreaderBase directly. --- Modules/Core/Common/include/itkProcessObject.h | 6 +++--- Modules/Core/Common/src/itkProcessObject.cxx | 4 ++-- .../Common/include/itkImageToImageMetric.h | 10 +++++----- .../Common/include/itkImageToImageMetric.hxx | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Modules/Core/Common/include/itkProcessObject.h b/Modules/Core/Common/include/itkProcessObject.h index aa5a909a501..904b1d5fc72 100644 --- a/Modules/Core/Common/include/itkProcessObject.h +++ b/Modules/Core/Common/include/itkProcessObject.h @@ -501,7 +501,7 @@ class ITKCommon_EXPORT ProcessObject : public Object /** @ITKEndGrouping */ /** Return the multithreader used by this class. */ - MultiThreaderType * + MultiThreaderBase * GetMultiThreader() const { return m_MultiThreader; @@ -509,7 +509,7 @@ class ITKCommon_EXPORT ProcessObject : public Object /** Set the multithreader used by this class. */ void - SetMultiThreader(MultiThreaderType * threader); + SetMultiThreader(MultiThreaderBase * threader); /** An opportunity to deallocate a ProcessObject's bulk data * storage. Some filters may wish to reuse existing bulk data @@ -1002,7 +1002,7 @@ class ITKCommon_EXPORT ProcessObject : public Object /** Support processing data in multiple threads. Used by subclasses * (e.g., ImageSource). */ - itk::SmartPointer m_MultiThreader; + itk::SmartPointer m_MultiThreader; ThreadIdType m_NumberOfWorkUnits{}; bool m_ThreaderUpdateProgress{ true }; diff --git a/Modules/Core/Common/src/itkProcessObject.cxx b/Modules/Core/Common/src/itkProcessObject.cxx index d6273a0377d..e0bb50564cd 100644 --- a/Modules/Core/Common/src/itkProcessObject.cxx +++ b/Modules/Core/Common/src/itkProcessObject.cxx @@ -63,7 +63,7 @@ ProcessObject::ProcessObject() m_IndexedInputs.push_back(m_Inputs.insert(p).first); m_IndexedOutputs.push_back(m_Outputs.insert(std::move(p)).first); - this->Self::SetMultiThreader(MultiThreaderType::New()); + this->Self::SetMultiThreader(MultiThreaderBase::New()); } @@ -1552,7 +1552,7 @@ ProcessObject::GenerateOutputRequestedRegion(DataObject * output) void -ProcessObject::SetMultiThreader(MultiThreaderType * threader) +ProcessObject::SetMultiThreader(MultiThreaderBase * threader) { if (this->m_MultiThreader != threader) { diff --git a/Modules/Registration/Common/include/itkImageToImageMetric.h b/Modules/Registration/Common/include/itkImageToImageMetric.h index 4762642ae0b..7b8e9fbb174 100644 --- a/Modules/Registration/Common/include/itkImageToImageMetric.h +++ b/Modules/Registration/Common/include/itkImageToImageMetric.h @@ -352,7 +352,7 @@ class ITK_TEMPLATE_EXPORT ImageToImageMetric : public SingleValuedCostFunction using MultiThreaderType = MultiThreaderBase; /** Get the Threader. */ /** @ITKStartGrouping */ - itkGetModifiableObjectMacro(Threader, MultiThreaderType); + itkGetModifiableObjectMacro(Threader, MultiThreaderBase); const TransformPointer * GetThreaderTransform() { @@ -600,7 +600,7 @@ class ITK_TEMPLATE_EXPORT ImageToImageMetric : public SingleValuedCostFunction /** * \class MultiThreaderWorkUnitInfoImageToImageMetricWrapper * This helper local class is used to extract information from the - * MultiThreaderType::WorkUnitInfo info type + * MultiThreaderBase::WorkUnitInfo info type * Do not allow inheritance for objects that are intended for static_cast * \ingroup ITKRegistrationCommon */ @@ -608,7 +608,7 @@ class ITK_TEMPLATE_EXPORT ImageToImageMetric : public SingleValuedCostFunction { public: MultiThreaderWorkUnitInfoImageToImageMetricWrapper(const void * workunitInfoAsVoid) - : m_WorkUnitInfo(static_cast(workunitInfoAsVoid)) + : m_WorkUnitInfo(static_cast(workunitInfoAsVoid)) {} [[nodiscard]] ThreadIdType GetThreadId() const @@ -622,10 +622,10 @@ class ITK_TEMPLATE_EXPORT ImageToImageMetric : public SingleValuedCostFunction } private: - const typename MultiThreaderType::WorkUnitInfo * m_WorkUnitInfo; + const MultiThreaderBase::WorkUnitInfo * m_WorkUnitInfo; }; - MultiThreaderType::Pointer m_Threader{}; + MultiThreaderBase::Pointer m_Threader{}; std::unique_ptr m_ConstSelfWrapper; mutable std::unique_ptr m_ThreaderNumberOfMovingImageSamples; bool m_WithinThreadPreProcess{ false }; diff --git a/Modules/Registration/Common/include/itkImageToImageMetric.hxx b/Modules/Registration/Common/include/itkImageToImageMetric.hxx index 342dc807519..84546dec784 100644 --- a/Modules/Registration/Common/include/itkImageToImageMetric.hxx +++ b/Modules/Registration/Common/include/itkImageToImageMetric.hxx @@ -54,7 +54,7 @@ ImageToImageMetric::ImageToImageMetric() , m_BSplineTransformIndices() , m_BSplineInterpolator(nullptr) , m_DerivativeCalculator(nullptr) - , m_Threader(MultiThreaderType::New()) + , m_Threader(MultiThreaderBase::New()) , m_ConstSelfWrapper(std::make_unique(this)) { this->m_NumberOfWorkUnits = this->m_Threader->GetNumberOfWorkUnits(); From 49ed4e0add5d9da831060383eb5d8b9e2b065266 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 15 Dec 2025 22:55:57 +0100 Subject: [PATCH 2/2] STYLE: ITK_FUTURE_LEGACY_REMOVE/deprecate `MultiThreaderType` aliases Asked users to use `itk::MultiThreaderBase` directly. --- Modules/Core/Common/include/itkProcessObject.h | 8 ++++++-- .../Registration/Common/include/itkImageToImageMetric.h | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Modules/Core/Common/include/itkProcessObject.h b/Modules/Core/Common/include/itkProcessObject.h index 904b1d5fc72..930d8dea167 100644 --- a/Modules/Core/Common/include/itkProcessObject.h +++ b/Modules/Core/Common/include/itkProcessObject.h @@ -164,8 +164,12 @@ class ITKCommon_EXPORT ProcessObject : public Object /** STL array of data object names */ using NameArray = std::vector; - /** Type of general multi-threader interface */ - using MultiThreaderType = MultiThreaderBase; +#ifndef ITK_FUTURE_LEGACY_REMOVE + /** Type of general multi-threader interface + * \deprecated Please use `itk::MultiThreaderBase` directly. + */ + using MultiThreaderType [[deprecated("Please use `itk::MultiThreaderBase` directly.")]] = MultiThreaderBase; +#endif /** \brief Return an array with the names of the inputs defined. * diff --git a/Modules/Registration/Common/include/itkImageToImageMetric.h b/Modules/Registration/Common/include/itkImageToImageMetric.h index 7b8e9fbb174..e7cb4205395 100644 --- a/Modules/Registration/Common/include/itkImageToImageMetric.h +++ b/Modules/Registration/Common/include/itkImageToImageMetric.h @@ -349,7 +349,11 @@ class ITK_TEMPLATE_EXPORT ImageToImageMetric : public SingleValuedCostFunction itkGetConstReferenceMacro(UseCachingOfBSplineWeights, bool); itkBooleanMacro(UseCachingOfBSplineWeights); /** @ITKEndGrouping */ - using MultiThreaderType = MultiThreaderBase; + +#ifndef ITK_FUTURE_LEGACY_REMOVE + using MultiThreaderType [[deprecated("Please use `itk::MultiThreaderBase` directly.")]] = MultiThreaderBase; +#endif + /** Get the Threader. */ /** @ITKStartGrouping */ itkGetModifiableObjectMacro(Threader, MultiThreaderBase);