Merge topic 'fix-unknownah-circular-dependency'

bb7661c16 Fix recursive header file dependancies

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Li-Ta Lo <ollie@lanl.gov>
Merge-request: !2552
This commit is contained in:
Kenneth Moreland 2021-08-11 13:35:16 +00:00 committed by Kitware Robot
commit bfb693c1d2
4 changed files with 28 additions and 29 deletions

@ -12,6 +12,9 @@
#include <vtkm/internal/IndexTag.h>
#include <vtkm/cont/DefaultTypes.h>
#include <vtkm/cont/UnknownArrayHandle.h>
#include <utility>
namespace vtkm
@ -25,8 +28,6 @@ class Field;
template <typename T, typename S>
class ArrayHandle;
class UnknownArrayHandle;
template <vtkm::IdComponent>
class CellSetStructured;
template <typename T>
@ -70,9 +71,13 @@ void CastAndCall(const vtkm::cont::ArrayHandle<T, U>& handle, Functor&& f, Args&
/// A specialization of CastAndCall for UnknownArrayHandle.
/// Since we have no hints on the types, use VTKM_DEFAULT_TYPE_LIST
/// and VTKM_DEFAULT_STORAGE_LIST.
// actually implemented in vtkm/cont/UnknownArrayHandle
// Implemented here to avoid circular dependencies.
template <typename Functor, typename... Args>
void CastAndCall(const UnknownArrayHandle& handle, Functor&& f, Args&&... args);
void CastAndCall(const UnknownArrayHandle& handle, Functor&& f, Args&&... args)
{
handle.CastAndCallForTypes<VTKM_DEFAULT_TYPE_LIST, VTKM_DEFAULT_STORAGE_LIST>(
std::forward<Functor>(f), std::forward<Args>(args)...);
}
/// A specialization of CastAndCall for basic CellSetStructured types,
/// Since the type is already known no deduction is needed.
@ -172,7 +177,16 @@ struct DynamicTransformTraits
///
using DynamicTag = vtkm::cont::internal::DynamicTransformTagStatic;
};
}
// Implemented here to avoid circular dependencies.
template <>
struct DynamicTransformTraits<vtkm::cont::UnknownArrayHandle>
{
using DynamicTag = vtkm::cont::internal::DynamicTransformTagCastAndCall;
};
} // namespace internal
}
} // namespace vtkm::cont

@ -16,6 +16,7 @@
#include <vtkm/Types.h>
#include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/CastAndCall.h>
#include <vtkm/cont/UnknownArrayHandle.h>
namespace vtkm

@ -10,6 +10,7 @@
#ifndef vtk_m_cont_UncertainArrayHandle_h
#define vtk_m_cont_UncertainArrayHandle_h
#include <vtkm/cont/CastAndCall.h>
#include <vtkm/cont/UnknownArrayHandle.h>
namespace vtkm

@ -18,8 +18,9 @@
#include <vtkm/cont/ArrayHandleMultiplexer.h>
#include <vtkm/cont/ArrayHandleRecombineVec.h>
#include <vtkm/cont/ArrayHandleStride.h>
#include <vtkm/cont/CastAndCall.h>
#include <vtkm/cont/DefaultTypes.h>
#include <vtkm/cont/StorageList.h>
#include <vtkm/TypeList.h>
#include <memory>
#include <typeindex>
@ -513,10 +514,10 @@ public:
template <typename NewValueTypeList>
VTKM_DEPRECATED(1.6, "Specify both value types and storage types.")
VTKM_CONT
vtkm::cont::UncertainArrayHandle<NewValueTypeList, VTKM_DEFAULT_STORAGE_LIST> ResetTypes(
vtkm::cont::UncertainArrayHandle<NewValueTypeList, vtkm::cont::StorageListCommon> ResetTypes(
NewValueTypeList = NewValueTypeList{}) const
{
return this->ResetTypes<NewValueTypeList, VTKM_DEFAULT_STORAGE_LIST>();
return this->ResetTypes<NewValueTypeList, vtkm::cont::StorageListCommon>();
}
/// \brief Returns the number of values in the array.
@ -806,13 +807,13 @@ private:
template <typename... Args>
VTKM_CONT void CastAndCallImpl(std::false_type, Args&&... args) const
{
this->CastAndCallForTypes<VTKM_DEFAULT_TYPE_LIST, VTKM_DEFAULT_STORAGE_LIST>(
this->CastAndCallForTypes<vtkm::TypeListCommon, vtkm::cont::StorageListCommon>(
std::forward<Args>(args)...);
}
template <typename StorageList, typename... Args>
VTKM_CONT void CastAndCallImpl(std::true_type, StorageList, Args&&... args) const
{
this->CastAndCallForTypes<VTKM_DEFAULT_TYPE_LIST, StorageList>(std::forward<Args>(args)...);
this->CastAndCallForTypes<vtkm::TypeListCommon, StorageList>(std::forward<Args>(args)...);
}
};
@ -1014,13 +1015,6 @@ VTKM_CONT inline ArrayHandleType Cast(const vtkm::cont::UnknownArrayHandle& arra
return array.template AsArrayHandle<ArrayHandleType>();
}
template <typename Functor, typename... Args>
void CastAndCall(const UnknownArrayHandle& handle, Functor&& f, Args&&... args)
{
handle.CastAndCallForTypes<VTKM_DEFAULT_TYPE_LIST, VTKM_DEFAULT_STORAGE_LIST>(
std::forward<Functor>(f), std::forward<Args>(args)...);
}
namespace detail
{
@ -1074,17 +1068,6 @@ inline void UnknownArrayHandle::CastAndCallWithExtractedArray(Functor&& functor,
}
}
namespace internal
{
template <>
struct DynamicTransformTraits<vtkm::cont::UnknownArrayHandle>
{
using DynamicTag = vtkm::cont::internal::DynamicTransformTagCastAndCall;
};
} // namespace internal
}
} // namespace vtkm::cont