From cdb4d8f5438f5dbc6de921fcda902144d0da605e Mon Sep 17 00:00:00 2001 From: bramas <berenger.bramas@inria.fr> Date: Tue, 4 Nov 2014 08:54:55 +0100 Subject: [PATCH] Use typedef for iterator --- Src/GroupTree/FGroupSeqAlgorithm.hpp | 44 +++++++++--------- Src/GroupTree/FGroupTaskAlgorithm.hpp | 64 +++++++++++++-------------- Src/GroupTree/FGroupTree.hpp | 33 ++++++++------ 3 files changed, 73 insertions(+), 68 deletions(-) diff --git a/Src/GroupTree/FGroupSeqAlgorithm.hpp b/Src/GroupTree/FGroupSeqAlgorithm.hpp index 34017df71..b0ff9abfb 100644 --- a/Src/GroupTree/FGroupSeqAlgorithm.hpp +++ b/Src/GroupTree/FGroupSeqAlgorithm.hpp @@ -56,11 +56,11 @@ public: protected: void bottomPass(){ FLOG( FTic timer; ); - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(tree->getHeight()-1); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(tree->getHeight()-1); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(tree->getHeight()-1); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(tree->getHeight()-1); while(iterParticles != endParticles && iterCells != endCells){ { // Can be a task(in:iterParticles, out:iterCells) @@ -89,11 +89,11 @@ protected: void upwardPass(){ FLOG( FTic timer; ); for(int idxLevel = tree->getHeight()-2 ; idxLevel >= 2 ; --idxLevel){ - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); - typename std::vector<CellContainerClass*>::iterator iterChildCells = tree->cellsBegin(idxLevel+1); - const typename std::vector<CellContainerClass*>::iterator endChildCells = tree->cellsEnd(idxLevel+1); + typename OctreeClass::CellGroupIterator iterChildCells = tree->cellsBegin(idxLevel+1); + const typename OctreeClass::CellGroupIterator endChildCells = tree->cellsEnd(idxLevel+1); while(iterCells != endCells && iterChildCells != endChildCells){ { // Can be a task(in:iterParticles, out:iterChildCells ...) @@ -135,8 +135,8 @@ protected: void transferPass(){ FLOG( FTic timer; ); for(int idxLevel = tree->getHeight()-1 ; idxLevel >= 2 ; --idxLevel){ - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); while(iterCells != endCells){ std::vector<OutOfBlockInteraction> outsideInteractions; @@ -186,7 +186,7 @@ protected: // Manage outofblock interaction FQuickSort<OutOfBlockInteraction, int>::QsSequential(outsideInteractions.data(),int(outsideInteractions.size())); - typename std::vector<CellContainerClass*>::iterator iterLeftCells = tree->cellsBegin(idxLevel); + typename OctreeClass::CellGroupIterator iterLeftCells = tree->cellsBegin(idxLevel); int currentOutInteraction = 0; while(iterLeftCells != iterCells && currentOutInteraction < int(outsideInteractions.size())){ const MortonIndex blockStartIdx = (*iterLeftCells)->getStartingIndex(); @@ -237,11 +237,11 @@ protected: void downardPass(){ FLOG( FTic timer; ); for(int idxLevel = 2 ; idxLevel <= tree->getHeight()-2 ; ++idxLevel){ - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); - typename std::vector<CellContainerClass*>::iterator iterChildCells = tree->cellsBegin(idxLevel+1); - const typename std::vector<CellContainerClass*>::iterator endChildCells = tree->cellsEnd(idxLevel+1); + typename OctreeClass::CellGroupIterator iterChildCells = tree->cellsBegin(idxLevel+1); + const typename OctreeClass::CellGroupIterator endChildCells = tree->cellsEnd(idxLevel+1); while(iterCells != endCells && iterChildCells != endChildCells){ { // Can be a task(in:iterParticles, inout:iterChildCells ...) @@ -281,11 +281,11 @@ protected: void directPass(){ FLOG( FTic timer; ); { - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(tree->getHeight()-1); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(tree->getHeight()-1); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(tree->getHeight()-1); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(tree->getHeight()-1); while(iterParticles != endParticles && iterCells != endCells){ { // Can be a task(in:iterCells, inout:iterParticles) @@ -309,8 +309,8 @@ protected: FAssertLF(iterParticles == endParticles && iterCells == endCells); } { - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); while(iterParticles != endParticles){ typename std::vector<OutOfBlockInteraction> outsideInteractions; @@ -359,7 +359,7 @@ protected: // Manage outofblock interaction FQuickSort<OutOfBlockInteraction, int>::QsSequential(outsideInteractions.data(),int(outsideInteractions.size())); - typename std::vector<ParticleGroupClass*>::iterator iterLeftParticles = tree->leavesBegin(); + typename OctreeClass::ParticleGroupIterator iterLeftParticles = tree->leavesBegin(); int currentOutInteraction = 0; while(iterLeftParticles != iterParticles && currentOutInteraction < int(outsideInteractions.size())){ const MortonIndex blockStartIdx = (*iterLeftParticles)->getStartingIndex(); diff --git a/Src/GroupTree/FGroupTaskAlgorithm.hpp b/Src/GroupTree/FGroupTaskAlgorithm.hpp index 0e6dfe35d..7f2c45682 100644 --- a/Src/GroupTree/FGroupTaskAlgorithm.hpp +++ b/Src/GroupTree/FGroupTaskAlgorithm.hpp @@ -115,8 +115,8 @@ protected: typename std::vector< std::vector<OutOfBlockInteraction> > allOutsideInteractions; { - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); // We iterate on blocks while(iterParticles != endParticles){ @@ -159,7 +159,7 @@ protected: // Sort to match external order FQuickSort<OutOfBlockInteraction, int>::QsSequential((*outsideInteractions).data(),int((*outsideInteractions).size())); - typename std::vector<ParticleGroupClass*>::iterator iterLeftParticles = tree->leavesBegin(); + typename OctreeClass::ParticleGroupIterator iterLeftParticles = tree->leavesBegin(); int currentOutInteraction = 0; while((*iterLeftParticles) != containers && currentOutInteraction < int((*outsideInteractions).size())){ ParticleGroupClass* leftContainers = (*iterLeftParticles); @@ -201,14 +201,14 @@ protected: for(int idxLevel = tree->getHeight()-1 ; idxLevel >= 2 ; --idxLevel){ std::vector<std::vector<OutOfBlockInteraction> > allOutsideInteractions; - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupConstIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupConstIterator endCells = tree->cellsEnd(idxLevel); while(iterCells != endCells){ allOutsideInteractions.push_back(std::vector<OutOfBlockInteraction>()); std::vector<OutOfBlockInteraction>* outsideInteractions = &allOutsideInteractions.back(); - CellContainerClass* currentCells = (*iterCells); + const CellContainerClass* currentCells = (*iterCells); externalInteractionsAllLevel[idxLevel].emplace_back(); std::vector<BlockInteractions<CellContainerClass>>* externalInteractions = &externalInteractionsAllLevel[idxLevel].back(); @@ -219,7 +219,7 @@ protected: const MortonIndex blockEndIdx = currentCells->getEndingIndex(); for(MortonIndex mindex = blockStartIdx ; mindex < blockEndIdx ; ++mindex){ - CellClass* cell = currentCells->getCell(mindex); + const CellClass* cell = currentCells->getCell(mindex); if(cell){ FAssertLF(cell->getMortonIndex() == mindex); MortonIndex interactionsIndexes[189]; @@ -245,7 +245,7 @@ protected: // Manage outofblock interaction FQuickSort<OutOfBlockInteraction, int>::QsSequential((*outsideInteractions).data(),int((*outsideInteractions).size())); - typename std::vector<CellContainerClass*>::iterator iterLeftCells = tree->cellsBegin(idxLevel); + typename OctreeClass::CellGroupIterator iterLeftCells = tree->cellsBegin(idxLevel); int currentOutInteraction = 0; while((*iterLeftCells) != currentCells && currentOutInteraction < int((*outsideInteractions).size())){ const MortonIndex blockStartIdx = (*iterLeftCells)->getStartingIndex(); @@ -291,11 +291,11 @@ protected: void bottomPass(){ FLOG( FTic timer; ); - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(tree->getHeight()-1); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(tree->getHeight()-1); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(tree->getHeight()-1); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(tree->getHeight()-1); while(iterParticles != endParticles && iterCells != endCells){ CellContainerClass* leafCells = (*iterCells); @@ -330,11 +330,11 @@ protected: void upwardPass(){ FLOG( FTic timer; ); for(int idxLevel = tree->getHeight()-2 ; idxLevel >= 2 ; --idxLevel){ - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); - typename std::vector<CellContainerClass*>::iterator iterChildCells = tree->cellsBegin(idxLevel+1); - const typename std::vector<CellContainerClass*>::iterator endChildCells = tree->cellsEnd(idxLevel+1); + typename OctreeClass::CellGroupIterator iterChildCells = tree->cellsBegin(idxLevel+1); + const typename OctreeClass::CellGroupIterator endChildCells = tree->cellsEnd(idxLevel+1); while(iterCells != endCells && iterChildCells != endChildCells){ CellContainerClass* currentCells = (*iterCells); @@ -407,8 +407,8 @@ protected: for(int idxLevel = tree->getHeight()-1 ; idxLevel >= 2 ; --idxLevel){ FLOG( timerInBlock.tic() ); { - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); while(iterCells != endCells){ CellContainerClass* currentCells = (*iterCells); @@ -455,8 +455,8 @@ protected: FLOG( timerInBlock.tac() ); FLOG( timerOutBlock.tic() ); { - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); typename std::vector<std::vector<BlockInteractions<CellContainerClass>>>::iterator externalInteractionsIter = externalInteractionsAllLevel[idxLevel].begin(); @@ -514,11 +514,11 @@ protected: void downardPass(){ FLOG( FTic timer; ); for(int idxLevel = 2 ; idxLevel <= tree->getHeight()-2 ; ++idxLevel){ - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(idxLevel); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(idxLevel); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(idxLevel); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(idxLevel); - typename std::vector<CellContainerClass*>::iterator iterChildCells = tree->cellsBegin(idxLevel+1); - const typename std::vector<CellContainerClass*>::iterator endChildCells = tree->cellsEnd(idxLevel+1); + typename OctreeClass::CellGroupIterator iterChildCells = tree->cellsBegin(idxLevel+1); + const typename OctreeClass::CellGroupIterator endChildCells = tree->cellsEnd(idxLevel+1); while(iterCells != endCells && iterChildCells != endChildCells){ CellContainerClass* currentCells = (*iterCells); @@ -589,8 +589,8 @@ protected: FLOG( timerInBlock.tic() ); { - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); while(iterParticles != endParticles){ ParticleGroupClass* containers = (*iterParticles); @@ -636,8 +636,8 @@ protected: FLOG( timerInBlock.tac() ); FLOG( timerOutBlock.tic() ); { - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); typename std::vector<std::vector<BlockInteractions<ParticleGroupClass>>>::iterator externalInteractionsIter = externalInteractionsLeafLevel.begin(); @@ -691,11 +691,11 @@ protected: void mergePass(){ FLOG( FTic timer; ); { - typename std::vector<ParticleGroupClass*>::iterator iterParticles = tree->leavesBegin(); - const typename std::vector<ParticleGroupClass*>::iterator endParticles = tree->leavesEnd(); + typename OctreeClass::ParticleGroupIterator iterParticles = tree->leavesBegin(); + const typename OctreeClass::ParticleGroupIterator endParticles = tree->leavesEnd(); - typename std::vector<CellContainerClass*>::iterator iterCells = tree->cellsBegin(tree->getHeight()-1); - const typename std::vector<CellContainerClass*>::iterator endCells = tree->cellsEnd(tree->getHeight()-1); + typename OctreeClass::CellGroupIterator iterCells = tree->cellsBegin(tree->getHeight()-1); + const typename OctreeClass::CellGroupIterator endCells = tree->cellsEnd(tree->getHeight()-1); while(iterParticles != endParticles && iterCells != endCells){ CellContainerClass* leafCells = (*iterCells); diff --git a/Src/GroupTree/FGroupTree.hpp b/Src/GroupTree/FGroupTree.hpp index ffc699de3..b20663d35 100644 --- a/Src/GroupTree/FGroupTree.hpp +++ b/Src/GroupTree/FGroupTree.hpp @@ -65,6 +65,11 @@ protected: } public: + typedef typename std::vector<CellGroupClass*>::iterator CellGroupIterator; + typedef typename std::vector<CellGroupClass*>::const_iterator CellGroupConstIterator; + typedef typename std::vector<ParticleGroupClass*>::iterator ParticleGroupIterator; + typedef typename std::vector<ParticleGroupClass*>::const_iterator ParticleGroupConstIterator; + /** This constructor create a blocked octree from a usual octree * The cell are allocated as in the usual octree (no copy constructor are called!) * Once allocated each cell receive its morton index and tree coordinate. @@ -297,8 +302,8 @@ public: // For each level from heigth - 2 to 1 for(int idxLevel = treeHeight-2; idxLevel > 0 ; --idxLevel){ - typename std::vector<CellGroupClass*>::const_iterator iterChildCells = cellBlocksPerLevel[idxLevel+1].begin(); - const typename std::vector<CellGroupClass*>::const_iterator iterChildEndCells = cellBlocksPerLevel[idxLevel+1].end(); + CellGroupConstIterator iterChildCells = cellBlocksPerLevel[idxLevel+1].begin(); + const CellGroupConstIterator iterChildEndCells = cellBlocksPerLevel[idxLevel+1].end(); MortonIndex currentCellIndex = (*iterChildCells)->getStartingIndex(); int sizeOfBlock = 0; @@ -417,11 +422,11 @@ public: */ template<class ParticlesAttachedClass> void forEachCellLeaf(std::function<void(CellClass*,ParticlesAttachedClass*)> function){ - typename std::vector<CellGroupClass*>::iterator iterCells = cellBlocksPerLevel[treeHeight-1].begin(); - const typename std::vector<CellGroupClass*>::iterator iterEndCells = cellBlocksPerLevel[treeHeight-1].end(); + CellGroupIterator iterCells = cellBlocksPerLevel[treeHeight-1].begin(); + const CellGroupIterator iterEndCells = cellBlocksPerLevel[treeHeight-1].end(); - typename std::vector<ParticleGroupClass*>::iterator iterLeaves = particleBlocks.begin(); - const typename std::vector<ParticleGroupClass*>::iterator iterEndLeaves = particleBlocks.end(); + ParticleGroupIterator iterLeaves = particleBlocks.begin(); + const ParticleGroupIterator iterEndLeaves = particleBlocks.end(); while(iterCells != iterEndCells && iterLeaves != iterEndLeaves){ (*iterCells)->forEachCell([&](CellClass* aCell){ @@ -482,40 +487,40 @@ public: return treeHeight; } - typename std::vector<CellGroupClass*>::iterator cellsBegin(const int atHeight){ + CellGroupIterator cellsBegin(const int atHeight){ FAssertLF(atHeight < treeHeight); return cellBlocksPerLevel[atHeight].begin(); } - typename std::vector<CellGroupClass*>::const_iterator cellsBegin(const int atHeight) const { + CellGroupConstIterator cellsBegin(const int atHeight) const { FAssertLF(atHeight < treeHeight); return cellBlocksPerLevel[atHeight].begin(); } - typename std::vector<CellGroupClass*>::iterator cellsEnd(const int atHeight){ + CellGroupIterator cellsEnd(const int atHeight){ FAssertLF(atHeight < treeHeight); return cellBlocksPerLevel[atHeight].end(); } - typename std::vector<CellGroupClass*>::const_iterator cellsEnd(const int atHeight) const { + CellGroupConstIterator cellsEnd(const int atHeight) const { FAssertLF(atHeight < treeHeight); return cellBlocksPerLevel[atHeight].end(); } - typename std::vector<ParticleGroupClass*>::iterator leavesBegin(){ + ParticleGroupIterator leavesBegin(){ return particleBlocks.begin(); } - typename std::vector<ParticleGroupClass*>::const_iterator leavesBegin() const { + ParticleGroupConstIterator leavesBegin() const { return particleBlocks.begin(); } - typename std::vector<ParticleGroupClass*>::iterator leavesEnd(){ + ParticleGroupIterator leavesEnd(){ return particleBlocks.end(); } - typename std::vector<ParticleGroupClass*>::const_iterator leavesEnd() const { + ParticleGroupConstIterator leavesEnd() const { return particleBlocks.end(); } }; -- GitLab