vtk-m/vtkm/cont
Kenneth Moreland aebafc9e5a Use SFINAE to write Set/Get methods in ArrayPortalSOA
Because ArrayPortalSOA calls a delegate portal to get the actual values,
it can only implement its own Set or Get if the delegate portal supports
it. Previously this was done by calling an overloaded internal method
based on the result of PortalSupportsSets/Gets. However, regardless of
whether the delegate portal supported Set or Get, ArrayPortalSOA
provided one. Thus, if something else tried to use PortalSupportsSets/
Gets on ArrayPortalSOA, it would always report true even if it was not
really supported.

Instead, use SFINAE to remove the Set or Get if that method is not
supported in the delegate portal.

Since ArrayHandleSOA is only really used for portals from basic storage
arrays, it will be rare that Set or Get is not supported. However, a
device adapter is free to remove one of these methods on a device
portal. For example, if you call PrepareForInput on an ArrayHandle, it
is possible that the device adapter will create a portal that has no Set
method because the array is not writable.

Thanks to Allison Vacanti for recomending this solution.
2019-08-20 12:10:16 -06:00
..
arg Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
cuda Fix CUDA shfl usage. 2019-08-01 10:57:57 -04:00
internal Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
openmp Merge topic 'array-handle-multiplexer' 2019-07-26 17:20:13 -04:00
serial Create ArrayHandleMultiplexer 2019-07-22 08:36:28 -06:00
tbb Create ArrayHandleMultiplexer 2019-07-22 08:36:28 -06:00
testing Add make_ArrayHandleSOA for std::vectors and C arrays 2019-08-20 12:09:57 -06:00
Algorithm.h Add CountSetBits and Fill device algorithms. 2019-06-25 11:30:39 -04:00
ArrayCopy.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandle.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandle.h Fix IsWritableArrayHandle for portals that exist but cannot be written 2019-07-19 20:33:58 -06:00
ArrayHandle.hxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleBitField.h Correct unused-parameter warnings from defaulted methods. 2019-05-02 10:27:48 -04:00
ArrayHandleCartesianProduct.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleCast.h Enable writing to ArrayHandleCast 2019-07-17 18:40:45 -06:00
ArrayHandleCompositeVector.h Correct more host/device warnings from methods that should be host only 2019-04-29 13:15:42 -04:00
ArrayHandleConcatenate.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleConstant.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleCounting.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleDiscard.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleExtractComponent.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleExtrudeCoords.h clean up warnings. 2019-06-24 22:10:32 -04:00
ArrayHandleExtrudeField.h consolidate some files 2019-06-22 00:48:12 -04:00
ArrayHandleGroupVec.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleGroupVecVariable.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleImplicit.h Remove Set method from ArrayPortalImplicit. 2019-08-09 15:14:00 -04:00
ArrayHandleIndex.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleMultiplexer.h Remove special ArrayHandleMultiplexer template case 2019-07-30 14:48:35 -06:00
ArrayHandlePermutation.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleReverse.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleSOA.cxx Add ArrayHandleSOA 2019-08-20 12:09:54 -06:00
ArrayHandleSOA.h Use SFINAE to write Set/Get methods in ArrayPortalSOA 2019-08-20 12:10:16 -06:00
ArrayHandleStreaming.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleSwizzle.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleTransform.h Remove invalid PortalType 2019-07-17 18:39:00 -06:00
ArrayHandleUniformPointCoordinates.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
ArrayHandleView.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleVirtual.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleVirtual.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleVirtual.hxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayHandleVirtualCoordinates.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
ArrayHandleZip.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayPortal.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayPortalToIterators.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ArrayRangeCompute.cxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
ArrayRangeCompute.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
ArrayRangeCompute.hxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
AssignerMultiBlock.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
AssignerMultiBlock.h conslidate the license statement 2019-04-17 10:57:13 -06:00
AtomicArray.h conslidate the license statement 2019-04-17 10:57:13 -06:00
BitField.h Provide better error messages when misusing a BitPortalConst. 2019-06-14 15:26:55 -04:00
BoundsCompute.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
BoundsCompute.h conslidate the license statement 2019-04-17 10:57:13 -06:00
BoundsGlobalCompute.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
BoundsGlobalCompute.h conslidate the license statement 2019-04-17 10:57:13 -06:00
CastAndCall.h conslidate the license statement 2019-04-17 10:57:13 -06:00
CellLocator.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
CellLocator.h conslidate the license statement 2019-04-17 10:57:13 -06:00
CellLocatorBoundingIntervalHierarchy.cxx Move Invoker into vtkm/cont 2019-08-01 12:34:27 -04:00
CellLocatorBoundingIntervalHierarchy.h conslidate the license statement 2019-04-17 10:57:13 -06:00
CellLocatorGeneral.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
CellLocatorGeneral.h conslidate the license statement 2019-04-17 10:57:13 -06:00
CellLocatorRectilinearGrid.cxx Fixing issues raised by Ken on Gitlab 2019-08-08 09:15:28 -07:00
CellLocatorRectilinearGrid.h Adding support for evaluating 2D meshes. 2019-07-11 10:45:30 -07:00
CellLocatorUniformBins.cxx Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellLocatorUniformBins.h Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellLocatorUniformGrid.cxx Fixing issues raised by Ken on Gitlab 2019-08-08 09:15:28 -07:00
CellLocatorUniformGrid.h Fixing issues raised by Ken on Gitlab 2019-08-08 09:15:28 -07:00
CellSet.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
CellSet.h conslidate the license statement 2019-04-17 10:57:13 -06:00
CellSetExplicit.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
CellSetExplicit.h Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetExplicit.hxx Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetExtrude.cxx Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetExtrude.h Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetExtrude.hxx Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetListTag.h Don't need this. 2019-06-26 19:37:35 -04:00
CellSetPermutation.h Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetSingleType.h Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetStructured.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
CellSetStructured.h Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CellSetStructured.hxx Refactor topology mappings to clarify meaning. 2019-08-06 11:27:26 -04:00
CMakeLists.txt Add ArrayHandleSOA 2019-08-20 12:09:54 -06:00
ColorTable.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ColorTable.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
ColorTable.hxx Merge topic 'move_invoker_to_cont' 2019-08-01 12:36:00 -04:00
ColorTablePresets.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ColorTablePrivate.hxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ColorTableSamples.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
CoordinateSystem.cxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
CoordinateSystem.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
CoordinateSystem.hxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
DataSet.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
DataSet.h Provide simplified way to construct point and cell fields 2019-08-15 11:03:41 -04:00
DataSetBuilderExplicit.cxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
DataSetBuilderExplicit.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
DataSetBuilderRectilinear.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
DataSetBuilderRectilinear.h conslidate the license statement 2019-04-17 10:57:13 -06:00
DataSetBuilderUniform.cxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
DataSetBuilderUniform.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
DataSetFieldAdd.h Provide simplified way to construct point and cell fields 2019-08-15 11:03:41 -04:00
DeviceAdapter.h conslidate the license statement 2019-04-17 10:57:13 -06:00
DeviceAdapterAlgorithm.h Add CountSetBits and Fill device algorithms. 2019-06-25 11:30:39 -04:00
DeviceAdapterListTag.h conslidate the license statement 2019-04-17 10:57:13 -06:00
DeviceAdapterTag.cxx For VTK-m libs all includes of DeviceAdapterTagCuda happen from cuda files 2019-04-22 10:39:54 -04:00
DeviceAdapterTag.h Remove DeviceAdapterError as it isn't needed any more. 2019-04-18 15:09:57 -04:00
DynamicCellSet.h CreateResult API improved to make it easier to use 2019-08-14 15:28:43 -04:00
EnvironmentTracker.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
EnvironmentTracker.h conslidate the license statement 2019-04-17 10:57:13 -06:00
Error.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorBadAllocation.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorBadDevice.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorBadDevice.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorBadType.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorBadType.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorBadValue.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorExecution.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorFilterExecution.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ErrorInternal.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ExecutionAndControlObjectBase.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ExecutionObjectBase.h For VTK-m libs all includes of DeviceAdapterTagCuda happen from cuda files 2019-04-22 10:39:54 -04:00
Field.cxx Provide simplified way to construct point and cell fields 2019-08-15 11:03:41 -04:00
Field.h Provide simplified way to construct point and cell fields 2019-08-15 11:03:41 -04:00
FieldRangeCompute.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
FieldRangeCompute.h conslidate the license statement 2019-04-17 10:57:13 -06:00
FieldRangeCompute.hxx conslidate the license statement 2019-04-17 10:57:13 -06:00
FieldRangeGlobalCompute.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
FieldRangeGlobalCompute.h conslidate the license statement 2019-04-17 10:57:13 -06:00
FieldRangeGlobalCompute.hxx conslidate the license statement 2019-04-17 10:57:13 -06:00
ImplicitFunctionHandle.h conslidate the license statement 2019-04-17 10:57:13 -06:00
Initialize.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
Initialize.h conslidate the license statement 2019-04-17 10:57:13 -06:00
Invoker.h Move Invoker into vtkm/cont 2019-08-01 12:34:27 -04:00
Logging.cxx Introduce a log level that details kernel launch parameters 2019-06-18 15:01:07 -04:00
Logging.h added VTKM_DEFINE_USER_LOG_LEVEL as a convenience macro 2019-08-07 09:49:29 -06:00
MultiBlock.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
MultiBlock.h conslidate the license statement 2019-04-17 10:57:13 -06:00
PointLocator.cxx Some classes should be exported 2019-04-25 09:50:49 -04:00
PointLocator.h Some classes should be exported 2019-04-25 09:50:49 -04:00
PointLocatorUniformGrid.cxx Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
PointLocatorUniformGrid.h Some classes should be exported 2019-04-25 09:50:49 -04:00
RuntimeDeviceInformation.cxx RuntimeDeviceInformation now says the AnyTag exists. 2019-05-21 15:15:06 -04:00
RuntimeDeviceInformation.h conslidate the license statement 2019-04-17 10:57:13 -06:00
RuntimeDeviceTracker.cxx ScopedRuntimeDeviceTracker have better controls of setting devices. 2019-05-21 15:32:10 -04:00
RuntimeDeviceTracker.h ScopedRuntimeDeviceTracker have better controls of setting devices. 2019-05-21 15:32:10 -04:00
SerializableTypeString.h conslidate the license statement 2019-04-17 10:57:13 -06:00
Serialization.h conslidate the license statement 2019-04-17 10:57:13 -06:00
Storage.h conslidate the license statement 2019-04-17 10:57:13 -06:00
StorageBasic.cxx conslidate the license statement 2019-04-17 10:57:13 -06:00
StorageBasic.h StealArray now returns the array and free function as a Pair. 2019-05-01 09:42:57 -04:00
StorageBasic.hxx Make sure all vtkm/cont .hxx files have header guards 2019-07-01 14:03:40 -04:00
StorageExtrude.h Remove invalid PortalType 2019-07-17 18:39:00 -06:00
StorageImplicit.h Remove invalid PortalType 2019-07-17 18:39:00 -06:00
StorageListTag.h Create ArrayHandleMultiplexer 2019-07-22 08:36:28 -06:00
StorageVirtual.cxx Remove DeviceAdapterError as it isn't needed any more. 2019-04-18 15:09:57 -04:00
StorageVirtual.h conslidate the license statement 2019-04-17 10:57:13 -06:00
StorageVirtual.hxx Fix IsWritableArrayHandle for portals that exist but cannot be written 2019-07-19 20:33:58 -06:00
Timer.cxx Avoid touching ListTag internals 2019-07-22 08:36:28 -06:00
Timer.h conslidate the license statement 2019-04-17 10:57:13 -06:00
TryExecute.cxx RuntimeDeviceTracker can't be copied and is only accessible via reference. 2019-05-20 11:43:05 -04:00
TryExecute.h RuntimeDeviceTracker can't be copied and is only accessible via reference. 2019-05-20 11:43:05 -04:00
VariantArrayHandle.h Avoid touching ListTag internals 2019-07-22 08:36:28 -06:00
VirtualObjectHandle.h conslidate the license statement 2019-04-17 10:57:13 -06:00
VirtualObjectHandle.hxx conslidate the license statement 2019-04-17 10:57:13 -06:00