endif
endif
-REDACT= consistency movfeatsplitedges \
- consistency movfeatrmstubs \
- consistency movfeatsplitnodes \
- consistency trivpairnodes \
+REDACT= consistency movfeatsplitedges \
+ consistency movfeatrmstubs \
+ consistency movfeatsplitnodesall \
+ consistency trivpairnodes \
consistency trivnullnodes
subseg2display: subseg2display.o
} while (anychange);
}
-static void movfeatsplitnodes(void) {
+static int movfeatsplitnodes_once(void) {
Node *node, *newnode;
EdgeEnd *edgeend, *mate;
Edge *edge;
- int side;
+ int side, ndone=0;
FOR_ALL_NODES(node) {
trace("movfeatsplitnodes ");
continue;
}
FOR_NODE_EDGEENDS(side,edgeend, node) {
+ ndone++;
edge= edgeend->edge;
mate= movfeat_findmate(edgeend);
assert(mate);
edgeend_replumb(edgeend, &newnode->sides[edgeend->node->side]);
}
}
+ trace("movfeatsplitnodes_once=%d\n",ndone);
+ return ndone;
}
+static void movfeatsplitnodes(void) { movfeatsplitnodes_once(); }
+static void movfeatsplitnodesall(void) { while ( movfeatsplitnodes_once() ); }
+
/*---------- operations - trivial graph redaction etc. ----------*/
static void trivpairnodes(void) {
OI(movfeatsplitedges)
OI(movfeatrmstubs)
OI(movfeatsplitnodes)
+ OI(movfeatsplitnodesall)
OI(trivpairnodes)
OI(trivnullnodes)
{ 0,0 }