#ifndef vtk_m_cont_DataSet_h #define vtk_m_cont_DataSet_h #include #include namespace vtkm { namespace cont { enum CellShape { VTKM_POINT, VTKM_BEAM, VTKM_TRI, VTKM_QUAD, VTKM_PIXEL, VTKM_TET, VTKM_PYRAMID, VTKM_WEDGE, VTKM_HEX, VTKM_VOXEL, VTKM_TRISTRIP, VTKM_POLYGON, VTKM_OTHER }; class ExplicitConnectivity { public: ExplicitConnectivity() : Shapes(), Connectivity() {} vtkm::Id GetNumberOfElements() { return Shapes.GetNumberOfValues(); } vtkm::Id GetNumberOfIndices(vtkm::Id index) { return NumIndices.GetPortalControl().Get(index); } vtkm::Id GetElementShapeType(vtkm::Id index) { return Shapes.GetPortalControl().Get(index); } void GetIndices(vtkm::Id index, vtkm::Vec &ids) { int n = GetNumberOfIndices(index); int start = MapCellToConnectivityIndex.GetPortalControl().Get(index); for (int i=0; i Shapes; vtkm::cont::ArrayHandle NumIndices; vtkm::cont::ArrayHandle Connectivity; vtkm::cont::ArrayHandle MapCellToConnectivityIndex; }; class DataSet { public: DataSet() {} //EAVL-esque everything is a field data model //vtkm::Vec, 1> Fields; std::vector > Fields; vtkm::Id x_idx, y_idx, z_idx; ExplicitConnectivity conn; //traditional data-model vtkm::cont::ArrayHandle > Points; vtkm::cont::ArrayHandle > Field; }; } } // namespace vtkm::cont #endif //vtk_m_cont_DataSet_h