mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 10:35:42 +00:00
63ef84ed78
As we remove more and more virtual methods from VTK-m, I expect several users will be interested in completely removing them from the build for several reasons. 1. They may be compiling for hardware that does not support virtual methods. 2. They may need to compile for CUDA but need shared libraries. 3. It should go a bit faster. To enable this, a CMake option named `VTKm_NO_DEPRECATED_VIRTUAL` is added. It defaults to `OFF`. But when it is `ON`, none of the code that both uses virtuals and is deprecated will be built. Currently, only `ArrayHandleVirtual` is deprecated, so the rest of the virtual classes will still be built. As we move forward, more will be removed until all virtual method functionality is removed.
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
//============================================================================
|
|
// 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_cont_arg_TypeCheckTagAtomicArray_h
|
|
#define vtk_m_cont_arg_TypeCheckTagAtomicArray_h
|
|
|
|
#include <vtkm/cont/arg/TypeCheck.h>
|
|
|
|
#include <vtkm/List.h>
|
|
|
|
#include <vtkm/cont/ArrayHandle.h>
|
|
#include <vtkm/cont/AtomicArray.h>
|
|
|
|
#ifndef VTKM_NO_DEPRECATED_VIRTUAL
|
|
#include <vtkm/cont/StorageVirtual.h>
|
|
#endif //VTKM_NO_DEPRECATED_VIRTUAL
|
|
|
|
namespace vtkm
|
|
{
|
|
namespace cont
|
|
{
|
|
namespace arg
|
|
{
|
|
|
|
/// The atomic array type check passes for an \c ArrayHandle of a structure
|
|
/// that is valid for atomic access. There are many restrictions on the
|
|
/// type of data that can be used for an atomic array.
|
|
///
|
|
struct TypeCheckTagAtomicArray;
|
|
|
|
template <typename ArrayType>
|
|
struct TypeCheck<TypeCheckTagAtomicArray, ArrayType>
|
|
{
|
|
static constexpr bool value = false;
|
|
};
|
|
|
|
template <typename T>
|
|
struct TypeCheck<TypeCheckTagAtomicArray, vtkm::cont::ArrayHandle<T, vtkm::cont::StorageTagBasic>>
|
|
{
|
|
static constexpr bool value = vtkm::ListHas<vtkm::cont::AtomicArrayTypeList, T>::value;
|
|
};
|
|
|
|
#ifndef VTKM_NO_DEPRECATED_VIRTUAL
|
|
VTKM_DEPRECATED_SUPPRESS_BEGIN
|
|
template <typename T>
|
|
struct TypeCheck<TypeCheckTagAtomicArray, vtkm::cont::ArrayHandle<T, vtkm::cont::StorageTagVirtual>>
|
|
{
|
|
static constexpr bool value = vtkm::ListHas<vtkm::cont::AtomicArrayTypeList, T>::value;
|
|
};
|
|
VTKM_DEPRECATED_SUPPRESS_END
|
|
#endif //VTKM_NO_DEPRECATED_VIRTUAL
|
|
}
|
|
}
|
|
} // namespace vtkm::cont::arg
|
|
|
|
#endif //vtk_m_cont_arg_TypeCheckTagAtomicArray_h
|