TraversorCell<MAP, ORBIT, OPT>::TraversorCell(const MAP& map, bool forceDartMarker) : m(map), dmark(NULL), cmark(NULL), quickTraversal(NULL), current(NIL), firstTraversal(true) { dimension = map.dimension(); switch(OPT) { case FORCE_DART_MARKING: dmark = new DartMarker<MAP>(map) ; break; case FORCE_CELL_MARKING: cmark = new CellMarker<MAP, ORBIT>(map) ; break; case FORCE_QUICK_TRAVERSAL: quickTraversal = map.template getQuickTraversal<ORBIT>() ; assert(quickTraversal != NULL); cont = &(map.template getAttributeContainer<ORBIT>()) ; break; case AUTO: if(forceDartMarker) dmark = new DartMarker<MAP>(map) ; else { quickTraversal = map.template getQuickTraversal<ORBIT>() ; if(quickTraversal != NULL) { cont = &(map.template getAttributeContainer<ORBIT>()) ; } else { if(map.template isOrbitEmbedded<ORBIT>()) cmark = new CellMarker<MAP, ORBIT>(map) ; else dmark = new DartMarker<MAP>(map) ; } } break; default: break; } }