From 37b3cdd953aed185c0ee8c9de080acbfd78863e6 Mon Sep 17 00:00:00 2001 From: Pierre Kraemer Date: Fri, 19 Oct 2012 18:02:23 +0200 Subject: [PATCH] debug TraversorCell : quickTraversor disable forceDartMarker --- include/Topology/generic/genericmap.h | 2 +- include/Topology/generic/genericmap.hpp | 4 +-- include/Topology/generic/traversorCell.hpp | 32 ++++++++++++---------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/include/Topology/generic/genericmap.h b/include/Topology/generic/genericmap.h index 32c669e59..9ed29a269 100644 --- a/include/Topology/generic/genericmap.h +++ b/include/Topology/generic/genericmap.h @@ -447,7 +447,7 @@ public: void enableQuickTraversal() ; template - void updateQuickTraversal() ; + void updateQuickTraversal(const FunctorSelect& good = allDarts) ; template AttributeMultiVector* getQuickTraversal() ; diff --git a/include/Topology/generic/genericmap.hpp b/include/Topology/generic/genericmap.hpp index 231c21e5f..130ef8ed5 100644 --- a/include/Topology/generic/genericmap.hpp +++ b/include/Topology/generic/genericmap.hpp @@ -435,14 +435,14 @@ inline void GenericMap::enableQuickTraversal() } template -inline void GenericMap::updateQuickTraversal() +inline void GenericMap::updateQuickTraversal(const FunctorSelect& good) { assert(m_quickTraversal[ORBIT] != NULL || !"updateQuickTraversal on a disabled orbit") ; CellMarker cm(*this) ; for(Dart d = begin(); d != end(); next(d)) { - if(!cm.isMarked(d)) + if(good(d) && !cm.isMarked(d)) { cm.mark(d) ; (*m_quickTraversal[ORBIT])[getEmbedding(d)] = d ; diff --git a/include/Topology/generic/traversorCell.hpp b/include/Topology/generic/traversorCell.hpp index 62c68f2b0..18d492c39 100644 --- a/include/Topology/generic/traversorCell.hpp +++ b/include/Topology/generic/traversorCell.hpp @@ -29,30 +29,32 @@ template TraversorCell::TraversorCell(MAP& map, const FunctorSelect& good, bool forceDartMarker, unsigned int thread) : m(map), dmark(NULL), cmark(NULL), current(NIL), firstTraversal(true), m_good(good) { - quickTraversal = map.template getQuickTraversal() ; - if(quickTraversal != NULL) - { - cont = &(m.template getAttributeContainer()) ; - } + if(forceDartMarker) + dmark = new DartMarker(map, thread) ; else { - if(!forceDartMarker && map.template isOrbitEmbedded()) - cmark = new CellMarker(map, thread) ; + quickTraversal = map.template getQuickTraversal() ; + if(quickTraversal != NULL) + { + cont = &(m.template getAttributeContainer()) ; + } else - dmark = new DartMarker(map, thread) ; + { + if(map.template isOrbitEmbedded()) + cmark = new CellMarker(map, thread) ; + else + dmark = new DartMarker(map, thread) ; + } } } template TraversorCell::~TraversorCell() { - if(quickTraversal == NULL) - { - if(dmark) - delete dmark ; - else - delete cmark ; - } + if(dmark) + delete dmark ; + else if(cmark) + delete cmark ; } template -- GitLab