Shorten tag name for ArrayHandleCompositeVector
This commit is contained in:
parent
8516fa7ac6
commit
2688fc7d50
@ -46,6 +46,24 @@ New storage:
|
||||
vtkm::cont::StorageTagCartesianProduct<StorageTag1, StorageTag2, StorageTag3>
|
||||
```
|
||||
|
||||
#### `ArrayHandleCompositeVector<AH1, AH2, ...>`
|
||||
|
||||
Old storage:
|
||||
``` cpp
|
||||
vtkm::cont::internal::StorageTagCompositeVector<
|
||||
tao::tuple<
|
||||
vtkm::cont::ArrayHandle<ValueType, StorageType1>,
|
||||
vtkm::cont::ArrayHandle<ValueType, StorageType2>,
|
||||
...
|
||||
>
|
||||
>
|
||||
```
|
||||
|
||||
New storage:
|
||||
``` cpp
|
||||
vtkm::cont::StorageTagCompositeVec<StorageType1, StorageType2>
|
||||
```
|
||||
|
||||
#### `ArrayHandleUniformPointCoordinates
|
||||
|
||||
Old storage:
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
#include <vtkm/cont/ArrayHandle.h>
|
||||
|
||||
#include <vtkm/Deprecated.h>
|
||||
#include <vtkm/StaticAssert.h>
|
||||
#include <vtkm/VecTraits.h>
|
||||
|
||||
@ -59,20 +60,6 @@ struct AllAreArrayHandles
|
||||
constexpr static bool Value = AllAreArrayHandlesImpl<ArrayHandleTs...>::Value;
|
||||
};
|
||||
|
||||
// ParamsAreArrayHandles: ------------------------------------------------------
|
||||
// Same as AllAreArrayHandles, but accepts a tuple.
|
||||
template <typename T>
|
||||
struct ParamsAreArrayHandles
|
||||
{
|
||||
constexpr static bool Value = false;
|
||||
};
|
||||
|
||||
template <typename... ArrayHandleTs>
|
||||
struct ParamsAreArrayHandles<vtkmstd::tuple<ArrayHandleTs...>>
|
||||
{
|
||||
constexpr static bool Value = AllAreArrayHandlesImpl<ArrayHandleTs...>::Value;
|
||||
};
|
||||
|
||||
// GetValueType: ---------------------------------------------------------------
|
||||
// Determines the output ValueType of the objects in TupleType, a vtkmstd::tuple
|
||||
// which can contain ArrayHandles, ArrayPortals...anything with a ValueType
|
||||
@ -479,15 +466,54 @@ private:
|
||||
PortalTuple Portals;
|
||||
};
|
||||
|
||||
template <typename ArrayTuple>
|
||||
struct VTKM_ALWAYS_EXPORT StorageTagCompositeVector
|
||||
} // namespace internal
|
||||
|
||||
template <typename... StorageTags>
|
||||
struct VTKM_ALWAYS_EXPORT StorageTagCompositeVec
|
||||
{
|
||||
};
|
||||
|
||||
template <typename ArrayTuple>
|
||||
class Storage<typename compvec::GetValueType<ArrayTuple>::ValueType,
|
||||
StorageTagCompositeVector<ArrayTuple>>
|
||||
namespace internal
|
||||
{
|
||||
|
||||
template <typename ArrayTuple>
|
||||
struct VTKM_ALWAYS_EXPORT VTKM_DEPRECATED(1.6, "Use StorageTagCompositeVec instead.")
|
||||
StorageTagCompositeVector
|
||||
{
|
||||
};
|
||||
|
||||
template <typename... ArrayTs>
|
||||
struct CompositeVectorTraits
|
||||
{
|
||||
// Need to check this here, since this traits struct is used in the
|
||||
// ArrayHandleCompositeVector superclass definition before any other
|
||||
// static_asserts could be used.
|
||||
VTKM_STATIC_ASSERT_MSG(compvec::AllAreArrayHandles<ArrayTs...>::Value,
|
||||
"Template parameters for ArrayHandleCompositeVector "
|
||||
"must be a list of ArrayHandle types.");
|
||||
|
||||
using ValueType = typename compvec::GetValueType<vtkmstd::tuple<ArrayTs...>>::ValueType;
|
||||
using StorageTag = vtkm::cont::StorageTagCompositeVec<typename ArrayTs::StorageTag...>;
|
||||
using StorageType = Storage<ValueType, StorageTag>;
|
||||
using Superclass = ArrayHandle<ValueType, StorageTag>;
|
||||
};
|
||||
|
||||
VTKM_DEPRECATED_SUPPRESS_BEGIN
|
||||
template <typename... Arrays>
|
||||
class Storage<typename compvec::GetValueType<vtkmstd::tuple<Arrays...>>::ValueType,
|
||||
StorageTagCompositeVector<vtkmstd::tuple<Arrays...>>>
|
||||
: CompositeVectorTraits<Arrays...>::StorageType
|
||||
{
|
||||
using Superclass = typename CompositeVectorTraits<Arrays...>::StorageType;
|
||||
using Superclass::Superclass;
|
||||
};
|
||||
VTKM_DEPRECATED_SUPPRESS_END
|
||||
|
||||
template <typename T, typename... StorageTags>
|
||||
class Storage<vtkm::Vec<T, static_cast<vtkm::IdComponent>(sizeof...(StorageTags))>,
|
||||
vtkm::cont::StorageTagCompositeVec<StorageTags...>>
|
||||
{
|
||||
using ArrayTuple = vtkmstd::tuple<vtkm::cont::ArrayHandle<T, StorageTags>...>;
|
||||
using ForEachArray =
|
||||
compvec::ArrayTupleForEach<0, vtkmstd::tuple_size<ArrayTuple>::value, ArrayTuple>;
|
||||
using PortalTypes = compvec::PortalTupleTraits<ArrayTuple>;
|
||||
@ -517,6 +543,18 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
template <typename... Arrays>
|
||||
VTKM_CONT Storage(const Arrays&... arrays)
|
||||
: Arrays(arrays...)
|
||||
, Valid(true)
|
||||
{
|
||||
using SizeValidator = compvec::ArraySizeValidator<ArrayTuple>;
|
||||
if (!SizeValidator::Exec(this->Arrays, this->GetNumberOfValues()))
|
||||
{
|
||||
throw ErrorBadValue("All arrays must have the same number of values.");
|
||||
}
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
@ -578,20 +616,39 @@ private:
|
||||
bool Valid;
|
||||
};
|
||||
|
||||
template <typename ArrayTuple, typename DeviceTag>
|
||||
class ArrayTransfer<typename compvec::GetValueType<ArrayTuple>::ValueType,
|
||||
StorageTagCompositeVector<ArrayTuple>,
|
||||
VTKM_DEPRECATED_SUPPRESS_BEGIN
|
||||
template <typename... Arrays, typename DeviceTag>
|
||||
struct ArrayTransfer<typename compvec::GetValueType<vtkmstd::tuple<Arrays...>>::ValueType,
|
||||
StorageTagCompositeVector<vtkmstd::tuple<Arrays...>>,
|
||||
DeviceTag>
|
||||
: ArrayTransfer<typename compvec::GetValueType<vtkmstd::tuple<Arrays...>>::ValueType,
|
||||
typename CompositeVectorTraits<Arrays...>::StorageType,
|
||||
DeviceTag>
|
||||
{
|
||||
using Superclass =
|
||||
ArrayTransfer<typename compvec::GetValueType<vtkmstd::tuple<Arrays...>>::ValueType,
|
||||
typename CompositeVectorTraits<Arrays...>::StorageType,
|
||||
DeviceTag>;
|
||||
using Superclass::Superclass;
|
||||
};
|
||||
VTKM_DEPRECATED_SUPPRESS_END
|
||||
|
||||
template <typename T, typename... StorageTags, typename DeviceTag>
|
||||
class ArrayTransfer<vtkm::Vec<T, static_cast<vtkm::IdComponent>(sizeof...(StorageTags))>,
|
||||
vtkm::cont::StorageTagCompositeVec<StorageTags...>,
|
||||
DeviceTag>
|
||||
{
|
||||
VTKM_IS_DEVICE_ADAPTER_TAG(DeviceTag);
|
||||
|
||||
using ArrayTuple = vtkmstd::tuple<vtkm::cont::ArrayHandle<T, StorageTags>...>;
|
||||
|
||||
public:
|
||||
using ValueType = typename compvec::GetValueType<ArrayTuple>::ValueType;
|
||||
|
||||
private:
|
||||
using ForEachArray =
|
||||
compvec::ArrayTupleForEach<0, vtkmstd::tuple_size<ArrayTuple>::value, ArrayTuple>;
|
||||
using StorageTag = StorageTagCompositeVector<ArrayTuple>;
|
||||
using StorageTag = vtkm::cont::StorageTagCompositeVec<StorageTags...>;
|
||||
using StorageType = internal::Storage<ValueType, StorageTag>;
|
||||
using ControlTraits = compvec::PortalTupleTraits<ArrayTuple>;
|
||||
using ExecutionTraits = typename ControlTraits::template ExecutionTypes<DeviceTag>;
|
||||
@ -656,22 +713,6 @@ private:
|
||||
StorageType* Storage;
|
||||
};
|
||||
|
||||
template <typename... ArrayTs>
|
||||
struct CompositeVectorTraits
|
||||
{
|
||||
// Need to check this here, since this traits struct is used in the
|
||||
// ArrayHandleCompositeVector superclass definition before any other
|
||||
// static_asserts could be used.
|
||||
VTKM_STATIC_ASSERT_MSG(compvec::AllAreArrayHandles<ArrayTs...>::Value,
|
||||
"Template parameters for ArrayHandleCompositeVector "
|
||||
"must be a list of ArrayHandle types.");
|
||||
|
||||
using ValueType = typename compvec::GetValueType<vtkmstd::tuple<ArrayTs...>>::ValueType;
|
||||
using StorageTag = StorageTagCompositeVector<vtkmstd::tuple<ArrayTs...>>;
|
||||
using StorageType = Storage<ValueType, StorageTag>;
|
||||
using Superclass = ArrayHandle<ValueType, StorageTag>;
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
|
||||
/// \brief An \c ArrayHandle that combines components from other arrays.
|
||||
@ -704,7 +745,7 @@ public:
|
||||
|
||||
VTKM_CONT
|
||||
ArrayHandleCompositeVector(const ArrayTs&... arrays)
|
||||
: Superclass(StorageType(vtkmstd::make_tuple(arrays...)))
|
||||
: Superclass(StorageType(arrays...))
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -742,6 +783,16 @@ struct SerializableTypeString<vtkm::cont::ArrayHandleCompositeVector<AHs...>>
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, typename... STs>
|
||||
struct SerializableTypeString<
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<T, static_cast<vtkm::IdComponent>(sizeof...(STs))>,
|
||||
vtkm::cont::StorageTagCompositeVec<STs...>>>
|
||||
: SerializableTypeString<
|
||||
vtkm::cont::ArrayHandleCompositeVector<vtkm::cont::ArrayHandle<T, STs>...>>
|
||||
{
|
||||
};
|
||||
|
||||
VTKM_DEPRECATED_SUPPRESS_BEGIN
|
||||
template <typename... AHs>
|
||||
struct SerializableTypeString<vtkm::cont::ArrayHandle<
|
||||
typename vtkm::cont::internal::compvec::GetValueType<vtkmstd::tuple<AHs...>>::ValueType,
|
||||
@ -749,6 +800,7 @@ struct SerializableTypeString<vtkm::cont::ArrayHandle<
|
||||
: SerializableTypeString<vtkm::cont::ArrayHandleCompositeVector<AHs...>>
|
||||
{
|
||||
};
|
||||
VTKM_DEPRECATED_SUPPRESS_END
|
||||
}
|
||||
} // vtkm::cont
|
||||
|
||||
@ -831,6 +883,15 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, typename... STs>
|
||||
struct Serialization<
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<T, static_cast<vtkm::IdComponent>(sizeof...(STs))>,
|
||||
vtkm::cont::StorageTagCompositeVec<STs...>>>
|
||||
: Serialization<vtkm::cont::ArrayHandleCompositeVector<vtkm::cont::ArrayHandle<T, STs>...>>
|
||||
{
|
||||
};
|
||||
|
||||
VTKM_DEPRECATED_SUPPRESS_BEGIN
|
||||
template <typename... AHs>
|
||||
struct Serialization<vtkm::cont::ArrayHandle<
|
||||
typename vtkm::cont::internal::compvec::GetValueType<vtkmstd::tuple<AHs...>>::ValueType,
|
||||
@ -838,6 +899,7 @@ struct Serialization<vtkm::cont::ArrayHandle<
|
||||
: Serialization<vtkm::cont::ArrayHandleCompositeVector<AHs...>>
|
||||
{
|
||||
};
|
||||
VTKM_DEPRECATED_SUPPRESS_END
|
||||
} // diy
|
||||
/// @endcond SERIALIZATION
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user