diff --git a/docs/changelog/vec-traits-base-components.md b/docs/changelog/vec-traits-base-components.md index 1db6b06de..4eb162a3b 100644 --- a/docs/changelog/vec-traits-base-components.md +++ b/docs/changelog/vec-traits-base-components.md @@ -32,3 +32,8 @@ using NewVec1 = using NewVec1 = typename vtkm::VecTraits::template ReplaceBaseComponentType; ``` + +This functionality replaces the functionality in `vtkm::BaseComponent`. Unfortunately, +`vtkm::BaseComponent` did not have the ability to replace the base component and +there was no straightforward way to implement that outside of `VecTraits`. + diff --git a/vtkm/BaseComponent.h b/vtkm/BaseComponent.h deleted file mode 100644 index cb0f91275..000000000 --- a/vtkm/BaseComponent.h +++ /dev/null @@ -1,64 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_BaseComponent_h -#define vtk_m_BaseComponent_h - -#include -#include -#include - -namespace vtkm -{ - -namespace detail -{ - -template -struct BaseComponentImpl; - -template -struct BaseComponentImpl -{ -private: - using ComponentType = typename vtkm::VecTraits::ComponentType; - -public: - using Type = - typename BaseComponentImpl::DimensionalityTag>::Type; -}; - -template -struct BaseComponentImpl - : BaseComponentImpl -{ -}; - -template -struct BaseComponentImpl -{ - using Type = ScalarType; -}; - -} // namespace detail - -// Finds the base component type of a Vec. If you have a Vec of Vecs, it will -// descend all Vecs until you get to the scalar type. -template -struct BaseComponent -{ - using Type = - typename detail::BaseComponentImpl::DimensionalityTag>::Type; -}; - -} // namespace vtkm - -#endif //vtk_m_BaseComponent_h diff --git a/vtkm/CMakeLists.txt b/vtkm/CMakeLists.txt index e6d7d22c3..007025c30 100644 --- a/vtkm/CMakeLists.txt +++ b/vtkm/CMakeLists.txt @@ -18,7 +18,6 @@ vtkm_install_headers( set(headers Assert.h - BaseComponent.h BinaryPredicates.h BinaryOperators.h Bitset.h diff --git a/vtkm/cont/ArrayHandleCast.h b/vtkm/cont/ArrayHandleCast.h index 115a16e28..3daa8ff8b 100644 --- a/vtkm/cont/ArrayHandleCast.h +++ b/vtkm/cont/ArrayHandleCast.h @@ -14,8 +14,8 @@ #include -#include #include +#include #include @@ -70,8 +70,8 @@ private: { #ifdef VTKM_ENABLE_LOGGING using DstValueType = T; - using SrcComp = typename vtkm::BaseComponent::Type; - using DstComp = typename vtkm::BaseComponent::Type; + using SrcComp = typename vtkm::VecTraits::BaseComponentType; + using DstComp = typename vtkm::VecTraits::BaseComponentType; using SrcLimits = std::numeric_limits; using DstLimits = std::numeric_limits; diff --git a/vtkm/cont/StorageExtrude.h b/vtkm/cont/StorageExtrude.h index 072d8153d..df67901e4 100644 --- a/vtkm/cont/StorageExtrude.h +++ b/vtkm/cont/StorageExtrude.h @@ -12,7 +12,7 @@ #include -#include +#include #include @@ -371,7 +371,7 @@ struct VTKM_ALWAYS_EXPORT StorageTagExtrude template class Storage { - using BaseT = typename BaseComponent::Type; + using BaseT = typename VecTraits::BaseComponentType; using HandleType = vtkm::cont::ArrayHandle; using TPortalType = typename HandleType::PortalConstControl; @@ -461,7 +461,7 @@ private: template class VTKM_ALWAYS_EXPORT ArrayTransfer { - using BaseT = typename BaseComponent::Type; + using BaseT = typename VecTraits::BaseComponentType; using TPortalType = decltype(vtkm::cont::ArrayHandle{}.PrepareForInput(Device{})); public: diff --git a/vtkm/exec/CellDerivative.h b/vtkm/exec/CellDerivative.h index a1c74f203..ed37aed2e 100644 --- a/vtkm/exec/CellDerivative.h +++ b/vtkm/exec/CellDerivative.h @@ -11,11 +11,11 @@ #define vtk_m_exec_Derivative_h #include -#include #include #include #include #include +#include #include #include @@ -341,7 +341,7 @@ VTKM_EXEC vtkm::Vec CellDerivativeFor2D CellShapeTag) { using FieldType = typename FieldVecType::ComponentType; - using BaseFieldType = typename BaseComponent::Type; + using BaseFieldType = typename vtkm::VecTraits::BaseComponentType; // We have an underdetermined system in 3D, so create a 2D space in the // plane that the polygon sits. @@ -523,7 +523,7 @@ VTKM_EXEC vtkm::Vec CellDerivative( VTKM_ASSERT(wCoords.GetNumberOfComponents() == 2); using FieldType = typename FieldVecType::ComponentType; - using BaseComponentType = typename BaseComponent::Type; + using BaseComponentType = typename vtkm::VecTraits::BaseComponentType; FieldType deltaField(field[1] - field[0]); vtkm::Vec vec(wCoords[1] - wCoords[0]); @@ -571,7 +571,7 @@ VTKM_EXEC vtkm::Vec CellDerivative( } using FieldType = typename FieldVecType::ComponentType; - using BaseComponentType = typename BaseComponent::Type; + using BaseComponentType = typename vtkm::VecTraits::BaseComponentType; ParametricCoordType dt; dt = static_cast(1) / static_cast(numPoints - 1); @@ -690,7 +690,7 @@ template VTKM_EXEC vtkm::Vec TriangleDerivative(const vtkm::Vec& field, const vtkm::Vec& wCoords) { - using BaseComponentType = typename BaseComponent::Type; + using BaseComponentType = typename vtkm::VecTraits::BaseComponentType; // The scalar values of the three points in a triangle completely specify a // linear field (with constant gradient) assuming the field is constant in @@ -998,7 +998,7 @@ template VTKM_EXEC vtkm::Vec TetraDerivative(const vtkm::Vec& field, const vtkm::Vec& wCoords) { - using BaseComponentType = typename BaseComponent::Type; + using BaseComponentType = typename vtkm::VecTraits::BaseComponentType; // The scalar values of the four points in a tetrahedron completely specify a // linear field (with constant gradient). The field, defined by the 3-vector diff --git a/vtkm/worklet/Gradient.h b/vtkm/worklet/Gradient.h index 4ad848d48..f786ec99e 100644 --- a/vtkm/worklet/Gradient.h +++ b/vtkm/worklet/Gradient.h @@ -114,7 +114,7 @@ struct GradientOutputFields : public vtkm::cont::ExecutionObjectBase { using ValueType = T; - using BaseTType = typename vtkm::BaseComponent::Type; + using BaseTType = typename vtkm::VecTraits::BaseComponentType; template struct ExecutionTypes diff --git a/vtkm/worklet/ScalarsToColors.hxx b/vtkm/worklet/ScalarsToColors.hxx index 67991f7c0..1eb03f0c9 100644 --- a/vtkm/worklet/ScalarsToColors.hxx +++ b/vtkm/worklet/ScalarsToColors.hxx @@ -10,7 +10,7 @@ #include -#include +#include #include #include @@ -54,7 +54,7 @@ void ScalarsToColors::Run(const vtkm::cont::ArrayHandle& values, { using namespace vtkm::worklet::colorconversion; //If our shift is 0 and our scale == 1 no need to apply them - using BaseT = typename vtkm::BaseComponent::Type; + using BaseT = typename vtkm::VecTraits::BaseComponentType; const bool shiftscale = needShiftScale(BaseT{}, this->Shift, this->Scale); if (shiftscale) { @@ -76,7 +76,7 @@ void ScalarsToColors::Run(const vtkm::cont::ArrayHandle& values, vtkm::cont::ArrayHandle& rgbOut) const { using namespace vtkm::worklet::colorconversion; - using BaseT = typename vtkm::BaseComponent::Type; + using BaseT = typename vtkm::VecTraits::BaseComponentType; const bool shiftscale = needShiftScale(BaseT{}, this->Shift, this->Scale); if (shiftscale) { @@ -101,7 +101,7 @@ void ScalarsToColors::RunMagnitude(const vtkm::cont::ArrayHandle // using namespace vtkm::worklet::colorconversion; //If our shift is 0 and our scale == 1 no need to apply them - using BaseT = typename vtkm::BaseComponent::Type; + using BaseT = typename vtkm::VecTraits::BaseComponentType; const bool shiftscale = needShiftScale(BaseT{}, this->Shift, this->Scale); if (shiftscale) { @@ -126,7 +126,7 @@ void ScalarsToColors::RunMagnitude(const vtkm::cont::ArrayHandle { using namespace vtkm::worklet::colorconversion; - using BaseT = typename vtkm::BaseComponent::Type; + using BaseT = typename vtkm::VecTraits::BaseComponentType; const bool shiftscale = needShiftScale(BaseT{}, this->Shift, this->Scale); if (shiftscale) { diff --git a/vtkm/worklet/gradient/GradientOutput.h b/vtkm/worklet/gradient/GradientOutput.h index 2808154fd..dfdea562e 100644 --- a/vtkm/worklet/gradient/GradientOutput.h +++ b/vtkm/worklet/gradient/GradientOutput.h @@ -11,7 +11,7 @@ #ifndef vtk_m_worklet_gradient_GradientOutput_h #define vtk_m_worklet_gradient_GradientOutput_h -#include +#include #include #include @@ -31,7 +31,7 @@ template struct GradientScalarOutputExecutionObject { using ValueType = vtkm::Vec; - using BaseTType = typename vtkm::BaseComponent::Type; + using BaseTType = typename vtkm::VecTraits::BaseComponentType; struct PortalTypes { @@ -61,7 +61,7 @@ template struct GradientScalarOutput : public vtkm::cont::ExecutionObjectBase { using ValueType = vtkm::Vec; - using BaseTType = typename vtkm::BaseComponent::Type; + using BaseTType = typename vtkm::VecTraits::BaseComponentType; template VTKM_CONT vtkm::exec::GradientScalarOutputExecutionObject PrepareForExecution( @@ -93,7 +93,7 @@ template struct GradientVecOutputExecutionObject { using ValueType = vtkm::Vec; - using BaseTType = typename vtkm::BaseComponent::Type; + using BaseTType = typename vtkm::VecTraits::BaseComponentType; template struct PortalTypes @@ -185,7 +185,7 @@ template struct GradientVecOutput : public vtkm::cont::ExecutionObjectBase { using ValueType = vtkm::Vec; - using BaseTType = typename vtkm::BaseComponent::Type; + using BaseTType = typename vtkm::VecTraits::BaseComponentType; template VTKM_CONT vtkm::exec::GradientVecOutputExecutionObject PrepareForExecution( diff --git a/vtkm/worklet/gradient/PointGradient.h b/vtkm/worklet/gradient/PointGradient.h index 540165a23..b05dda445 100644 --- a/vtkm/worklet/gradient/PointGradient.h +++ b/vtkm/worklet/gradient/PointGradient.h @@ -78,7 +78,7 @@ struct PointGradient : public vtkm::worklet::WorkletVisitPointsWithCells if (numCells != 0) { - using BaseGradientType = typename vtkm::BaseComponent::Type; + using BaseGradientType = typename vtkm::VecTraits::BaseComponentType; const BaseGradientType invNumCells = static_cast(1.) / static_cast(numCells); diff --git a/vtkm/worklet/gradient/StructuredPointGradient.h b/vtkm/worklet/gradient/StructuredPointGradient.h index 5aa59d1aa..7ad930fd6 100644 --- a/vtkm/worklet/gradient/StructuredPointGradient.h +++ b/vtkm/worklet/gradient/StructuredPointGradient.h @@ -47,7 +47,7 @@ struct StructuredPointGradient : public vtkm::worklet::WorkletPointNeighborhood GradientOutType& outputGradient) const { using CoordType = typename PointsIn::ValueType; - using CT = typename vtkm::BaseComponent::Type; + using CT = typename vtkm::VecTraits::BaseComponentType; using OT = typename GradientOutType::ComponentType; vtkm::Vec xi, eta, zeta; diff --git a/vtkm/worklet/testing/UnitTestScalarsToColors.cxx b/vtkm/worklet/testing/UnitTestScalarsToColors.cxx index af0ab9545..a95ac25ee 100644 --- a/vtkm/worklet/testing/UnitTestScalarsToColors.cxx +++ b/vtkm/worklet/testing/UnitTestScalarsToColors.cxx @@ -80,7 +80,7 @@ vtkm::Vec4ui_8 as_color(vtkm::Float32 v, vtkm::Float32 alpha) template vtkm::cont::ArrayHandle make_data(const vtkm::Range& r) { - using BaseT = typename vtkm::BaseComponent::Type; + using BaseT = typename vtkm::VecTraits::BaseComponentType; vtkm::Float32 shift, scale; vtkm::worklet::colorconversion::ComputeShiftScale(r, shift, scale); const bool shiftscale = vtkm::worklet::colorconversion::needShiftScale(BaseT{}, shift, scale);