vtk-m/vtkm/cont/arg/TypeCheckTagCellSetStructured.h
Kenneth Moreland 76f870150b Type check input and output array arguments differently
Read-only arrays (usually) do not define Set methods. Thus, using one in
an Invoke argument that does output will result in compile errors. To
help avoid that, modify the type checks to differentiate input and
output arrays.
2020-03-19 15:07:01 -06:00

46 lines
1.3 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_TypeCheckTagCellSetStructured_h
#define vtk_m_cont_arg_TypeCheckTagCellSetStructured_h
#include <vtkm/cont/arg/TypeCheck.h>
#include <vtkm/cont/CellSetStructured.h>
namespace vtkm
{
namespace cont
{
namespace arg
{
/// Check for a Structured CellSet-like object.
///
struct TypeCheckTagCellSetStructured
{
};
template <typename CellSetType>
struct TypeCheck<TypeCheckTagCellSetStructured, CellSetType>
{
using is_3d_cellset = std::is_same<CellSetType, vtkm::cont::CellSetStructured<3>>;
using is_2d_cellset = std::is_same<CellSetType, vtkm::cont::CellSetStructured<2>>;
using is_1d_cellset = std::is_same<CellSetType, vtkm::cont::CellSetStructured<1>>;
static constexpr bool value =
is_3d_cellset::value || is_2d_cellset::value || is_1d_cellset::value;
};
}
}
} // namespace vtkm::cont::arg
#endif //vtk_m_cont_arg_TypeCheckTagCellSetStructured_h