From 90c870f2f56d5af311db52b6208b1bc5258693e5 Mon Sep 17 00:00:00 2001 From: dongliangchu Date: Thu, 24 Aug 2017 10:50:14 -0400 Subject: [PATCH] reviewed version 1 --- vtkm/cont/MultiBlock.cxx | 51 +++++------------------- vtkm/cont/MultiBlock.h | 8 +--- vtkm/cont/testing/UnitTestMultiBlock.cxx | 32 ++++++++++----- 3 files changed, 35 insertions(+), 56 deletions(-) diff --git a/vtkm/cont/MultiBlock.cxx b/vtkm/cont/MultiBlock.cxx index 4ec8919af..f2fd9b920 100644 --- a/vtkm/cont/MultiBlock.cxx +++ b/vtkm/cont/MultiBlock.cxx @@ -33,21 +33,18 @@ namespace cont VTKM_CONT MultiBlock::MultiBlock(const vtkm::cont::DataSet& ds) - : capacitytag(false) { this->blocks.insert(blocks.end(), ds); } VTKM_CONT MultiBlock::MultiBlock(const vtkm::cont::MultiBlock& src) - : capacitytag(false) { this->blocks = src.GetBlocks(); } VTKM_CONT MultiBlock::MultiBlock(const std::vector& mblocks) - : capacitytag(false) { this->blocks = mblocks; } @@ -55,14 +52,11 @@ MultiBlock::MultiBlock(const std::vector& mblocks) VTKM_CONT MultiBlock::MultiBlock(vtkm::Id size) { - this->capacity = size; - this->capacitytag = true; this->blocks.reserve(static_cast(size)); } VTKM_CONT MultiBlock::MultiBlock() - : capacitytag(false) { } @@ -92,32 +86,6 @@ vtkm::Id MultiBlock::GetNumberOfBlocks() const return static_cast(this->blocks.size()); } -VTKM_CONT -vtkm::Id MultiBlock::GetCapacity() -{ - if (this->capacitytag) - return this->capacity; - else - std::cout << "structure capacity not set yet\n"; - return 0; -} - - -VTKM_CONT -void MultiBlock::SetCapacity(vtkm::Id size) -{ - if (static_cast(this->blocks.capacity()) < size) - { - this->capacity = size; - this->capacitytag = true; - this->blocks.reserve(static_cast(size)); - } - else - { - std::cout << "required size is too small and rejected<<\n"; - } -} - VTKM_CONT const vtkm::cont::DataSet& MultiBlock::GetBlock(vtkm::Id blockId) const { @@ -139,29 +107,32 @@ void MultiBlock::AddBlock(vtkm::cont::DataSet& ds) VTKM_CONT void MultiBlock::AddBlocks(std::vector& mblocks) { - for (std::size_t i = 0; i < mblocks.size(); i++) - { - AddBlock(mblocks[i]); - } + this->blocks.insert(blocks.end(), mblocks.begin(), mblocks.end()); return; } VTKM_CONT void MultiBlock::InsertBlock(vtkm::Id index, vtkm::cont::DataSet& ds) { - if (index < static_cast(blocks.size())) + if (index <= static_cast(blocks.size())) this->blocks.insert(blocks.begin() + index, ds); else - std::cout << "insertion failure, invalid insertion posotion\n"; + { + std::string msg = "invalid insert position\n "; + throw ErrorExecution(msg); + } } VTKM_CONT -void MultiBlock::OverWriteBlock(vtkm::Id index, vtkm::cont::DataSet& ds) +void MultiBlock::ReplaceBlock(vtkm::Id index, vtkm::cont::DataSet& ds) { if (index < static_cast(blocks.size())) this->blocks.at(static_cast(index)) = ds; else - std::cout << "invalid overwrite posotion\n"; + { + std::string msg = "invalid replace position\n "; + throw ErrorExecution(msg); + } } VTKM_CONT diff --git a/vtkm/cont/MultiBlock.h b/vtkm/cont/MultiBlock.h index 24d3e6832..23f531c60 100644 --- a/vtkm/cont/MultiBlock.h +++ b/vtkm/cont/MultiBlock.h @@ -64,9 +64,6 @@ public: VTKM_CONT vtkm::Id GetNumberOfBlocks() const; - VTKM_CONT - vtkm::Id GetCapacity(); - VTKM_CONT void SetCapacity(vtkm::Id size); @@ -83,7 +80,7 @@ public: void InsertBlock(vtkm::Id index, vtkm::cont::DataSet& ds); /// replace the "index" positioned element of the contained DataSet vector with "ds" VTKM_CONT - void OverWriteBlock(vtkm::Id index, vtkm::cont::DataSet& ds); + void ReplaceBlock(vtkm::Id index, vtkm::cont::DataSet& ds); /// append the DataSet vector "mblocks" to the end of the contained one VTKM_CONT void AddBlocks(std::vector& mblocks); @@ -140,9 +137,6 @@ public: private: std::vector blocks; - vtkm::Id capacity; - bool capacitytag; - std::vector block_ids; }; } } // namespace vtkm::cont diff --git a/vtkm/cont/testing/UnitTestMultiBlock.cxx b/vtkm/cont/testing/UnitTestMultiBlock.cxx index d855de332..d7f9bf46a 100644 --- a/vtkm/cont/testing/UnitTestMultiBlock.cxx +++ b/vtkm/cont/testing/UnitTestMultiBlock.cxx @@ -115,16 +115,30 @@ static void MultiBlockTest() multiblock.GetBlock(0).GetField("cellvar").GetRange(&TestRange); VTKM_TEST_ASSERT(TestRange == SourceRange, "Local field value info incorrect"); - multiblock.OverWriteBlock(0, TDset2); - TestDSet = multiblock.GetBlock(0); - DataSet_Compare(TDset2, TestDSet); - multiblock.OverWriteBlock(0, TDset1); - TestDSet = multiblock.GetBlock(0); + vtkm::cont::MultiBlock testblocks1; + std::vector blocks = multiblock.GetBlocks(); + testblocks1.AddBlocks(blocks); + VTKM_TEST_ASSERT(multiblock.GetNumberOfBlocks() == testblocks1.GetNumberOfBlocks(), + "inconsistent number of blocks"); + + vtkm::cont::MultiBlock testblocks2(2); + testblocks2.InsertBlock(0, TDset1); + testblocks2.InsertBlock(1, TDset2); + + TestDSet = testblocks2.GetBlock(0); + DataSet_Compare(TDset1, TestDSet); + + TestDSet = testblocks2.GetBlock(1); + DataSet_Compare(TDset2, TestDSet); + + testblocks2.ReplaceBlock(0, TDset2); + testblocks2.ReplaceBlock(1, TDset1); + + TestDSet = testblocks2.GetBlock(0); + DataSet_Compare(TDset2, TestDSet); + + TestDSet = testblocks2.GetBlock(1); DataSet_Compare(TDset1, TestDSet); - multiblock.SetCapacity(3); - std::cout << "capacity updated\n"; - multiblock.SetCapacity(2); - std::cout << "structure capacity" << multiblock.GetCapacity() << "\n"; } void DataSet_Compare(vtkm::cont::DataSet& LeftDateSet, vtkm::cont::DataSet& RightDateSet)