trace(" elimtrivial operation complete\n");
}
}
-
-
-
-
-
-
- if ((n= count_sides(&node->edges[rightside]))) {
-node->edges[rightside]
-
- $tracep= "extendsplits pass=$pass ".pnode($node)."/$rightback";
- if (@{ $node->{"Edges$leftback"} } != 1) {
- trace("$tracep >1 left edge");
- next;
- }
- ($leftedge,$leftthisfar)= @{ $node->{"Edges$leftback"}[0] };
- $leftthatfar= 1-$leftthisfar;
- $fixedseg= $leftedge->{SubSegSpec};
- @any_wrong= ();
- for $rightedgethisfar (@{ $node->{"Edges$rightback"} }) {
- ($rightedge,$rightthisfar) = @$rightedgethisfar;
- if ($rightedge->{SubSegSpec} !~ m,^(\-?\w+)/\w+$,) {
- @any_wrong= ($rightedge, $leftback, "not moveable");
- } elsif ($1 ne $fixedseg) {
- @any_wrong= ($rightedge, $leftback, "other segment");
- }
- last if @any_wrong;
- }
- if (@any_wrong) {
- trace("$tracep $any_wrong[2] ".
- pedge($any_wrong[0])."::$any_wrong[1]");
- next;
- }
- $any_found++;
- $dist= $leftedge->{Dist};
- ($leftnode,$leftnoderightback)=
- @{ $leftedge->{"Node$leftthatfar"} };
- deleteedge($leftedge);
- for $rightedgethisfar (@{ $node->{"Edges$rightback"} }) {
- ($rightedge,$rightthisfar) = @$rightedgethisfar;
- replumbedge($rightedge,$rightthisfar,
- $leftnode,$leftnoderightback);
-
-
- $rightedge->{Dist} += $leftedge->{Dist};
- $rightedge->{"Node$rightthisfar"}=
-
- $leftnode->{"Edges$leftnoderightback"} =
- [ grep {
- ($grepnode, $grepback) = @$_;
- !($grepnode == $node &&
- $grepback == $leftnoderightback);
- }
- @{ $leftnode->{"Edges$leftnoderightback"} }
- ];
-
-
-
- }