//============================================================================ // 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. //============================================================================ #include #include #include #include #include #include #include #include #include namespace vtkm { namespace cont { VTKM_CONT MultiBlock::MultiBlock(const vtkm::cont::DataSet& ds) { this->Blocks.insert(this->Blocks.end(), ds); } VTKM_CONT MultiBlock::MultiBlock(const vtkm::cont::MultiBlock& src) { this->Blocks = src.GetBlocks(); } VTKM_CONT MultiBlock::MultiBlock(const std::vector& mblocks) { this->Blocks = mblocks; } VTKM_CONT MultiBlock::MultiBlock(vtkm::Id size) { this->Blocks.reserve(static_cast(size)); } VTKM_CONT MultiBlock::MultiBlock() { } VTKM_CONT MultiBlock::~MultiBlock() { } VTKM_CONT MultiBlock& MultiBlock::operator=(const vtkm::cont::MultiBlock& src) { this->Blocks = src.GetBlocks(); return *this; } VTKM_CONT vtkm::cont::Field MultiBlock::GetField(const std::string& field_name, const int& block_index) { assert(block_index >= 0); assert(static_cast(block_index) < this->Blocks.size()); return this->Blocks[static_cast(block_index)].GetField(field_name); } VTKM_CONT vtkm::Id MultiBlock::GetNumberOfBlocks() const { return static_cast(this->Blocks.size()); } VTKM_CONT const vtkm::cont::DataSet& MultiBlock::GetBlock(vtkm::Id blockId) const { return this->Blocks[static_cast(blockId)]; } VTKM_CONT const std::vector& MultiBlock::GetBlocks() const { return this->Blocks; } VTKM_CONT void MultiBlock::AddBlock(const vtkm::cont::DataSet& ds) { this->Blocks.insert(this->Blocks.end(), ds); return; } void MultiBlock::AddBlocks(const std::vector& mblocks) { this->Blocks.insert(this->Blocks.end(), mblocks.begin(), mblocks.end()); return; } VTKM_CONT void MultiBlock::InsertBlock(vtkm::Id index, const vtkm::cont::DataSet& ds) { if (index <= static_cast(this->Blocks.size())) this->Blocks.insert(this->Blocks.begin() + index, ds); else { std::string msg = "invalid insert position\n "; throw ErrorExecution(msg); } } VTKM_CONT void MultiBlock::ReplaceBlock(vtkm::Id index, const vtkm::cont::DataSet& ds) { if (index < static_cast(this->Blocks.size())) this->Blocks.at(static_cast(index)) = ds; else { std::string msg = "invalid replace position\n "; throw ErrorExecution(msg); } } VTKM_CONT void MultiBlock::PrintSummary(std::ostream& stream) const { stream << "block " << "\n"; for (size_t block_index = 0; block_index < this->Blocks.size(); ++block_index) { stream << "block " << block_index << "\n"; this->Blocks[block_index].PrintSummary(stream); } } } } // namespace vtkm::cont