insertUniqueEdge method
Inserted edges are checked to see if an identical edge already exists. If so, the edge is not inserted, but its label is merged with the existing edge.
Implementation
void insertUniqueEdge(Edge e) {
//<FIX> MD 8 Oct 03 speed up identical edge lookup
// fast lookup
Edge? existingEdge = edgeList.findEqualEdge(e);
// If an identical edge already exists, simply update its label
if (existingEdge != null) {
Label existingLabel = existingEdge.getLabel()!;
Label labelToMerge = e.getLabel()!;
// check if new edge is in reverse direction to existing edge
// if so, must flip the label before merging it
if (!existingEdge.isPointwiseEqual(e)) {
labelToMerge = new Label.fromLabel(e.getLabel()!);
labelToMerge.flip();
}
existingLabel.merge(labelToMerge);
// compute new depth delta of sum of edges
int mergeDelta = depthDelta(labelToMerge);
int existingDelta = existingEdge.getDepthDelta();
int newDelta = existingDelta + mergeDelta;
existingEdge.setDepthDelta(newDelta);
} else {
// no matching existing edge was found
// add this new edge to the list of edges in this graph
//e.setName(name + edges.size());
edgeList.add(e);
e.setDepthDelta(depthDelta(e.getLabel()!));
}
}