@Override public void addInEdge(E edge, N node, boolean isSelfLoop) { if (isSelfLoop) { checkPositive(++selfLoopCount); } N previousNode = inEdgeMap.put(edge, node); checkState(previousNode == null); }
@Override public void addPredecessor(N node, V unused) { Object previousValue = adjacentNodeValues.put(node, PRED); if (previousValue == null) { checkPositive(++predecessorCount); } else if (previousValue instanceof PredAndSucc) { // Restore previous PredAndSucc object. adjacentNodeValues.put(node, previousValue); } else if (previousValue != PRED) { // successor // Do NOT use method parameter value 'unused'. In directed graphs, successors store the value. adjacentNodeValues.put(node, new PredAndSucc(previousValue)); checkPositive(++predecessorCount); } }
@Override public void addInEdge(E edge, N node, boolean isSelfLoop) { if (isSelfLoop) { checkPositive(++selfLoopCount); } N previousNode = inEdgeMap.put(edge, node); checkState(previousNode == null); }
@SuppressWarnings("unchecked") @Override public V addSuccessor(N node, V value) { Object previousValue = adjacentNodeValues.put(node, value); if (previousValue == null) { checkPositive(++successorCount); return null; } else if (previousValue instanceof PredAndSucc) { adjacentNodeValues.put(node, new PredAndSucc(value)); return (V) ((PredAndSucc) previousValue).successorValue; } else if (previousValue == PRED) { adjacentNodeValues.put(node, new PredAndSucc(value)); checkPositive(++successorCount); return null; } else { // successor return (V) previousValue; } }
@Override public void addInEdge(E edge, N node, boolean isSelfLoop) { if (isSelfLoop) { checkPositive(++selfLoopCount); } N previousNode = inEdgeMap.put(edge, node); checkState(previousNode == null); }
@Override public void addPredecessor(N node, V unused) { Object previousValue = adjacentNodeValues.put(node, PRED); if (previousValue == null) { checkPositive(++predecessorCount); } else if (previousValue instanceof PredAndSucc) { // Restore previous PredAndSucc object. adjacentNodeValues.put(node, previousValue); } else if (previousValue != PRED) { // successor // Do NOT use method parameter value 'unused'. In directed graphs, successors store the value. adjacentNodeValues.put(node, new PredAndSucc(previousValue)); checkPositive(++predecessorCount); } }
@Override public void addPredecessor(N node, V unused) { Object previousValue = adjacentNodeValues.put(node, PRED); if (previousValue == null) { checkPositive(++predecessorCount); } else if (previousValue instanceof PredAndSucc) { // Restore previous PredAndSucc object. adjacentNodeValues.put(node, previousValue); } else if (previousValue != PRED) { // successor // Do NOT use method parameter value 'unused'. In directed graphs, successors store the value. adjacentNodeValues.put(node, new PredAndSucc(previousValue)); checkPositive(++predecessorCount); } }
@SuppressWarnings("unchecked") @Override public V addSuccessor(N node, V value) { Object previousValue = adjacentNodeValues.put(node, value); if (previousValue == null) { checkPositive(++successorCount); return null; } else if (previousValue instanceof PredAndSucc) { adjacentNodeValues.put(node, new PredAndSucc(value)); return (V) ((PredAndSucc) previousValue).successorValue; } else if (previousValue == PRED) { adjacentNodeValues.put(node, new PredAndSucc(value)); checkPositive(++successorCount); return null; } else { // successor return (V) previousValue; } }
@SuppressWarnings("unchecked") @Override public V addSuccessor(N node, V value) { Object previousValue = adjacentNodeValues.put(node, value); if (previousValue == null) { checkPositive(++successorCount); return null; } else if (previousValue instanceof PredAndSucc) { adjacentNodeValues.put(node, new PredAndSucc(value)); return (V) ((PredAndSucc) previousValue).successorValue; } else if (previousValue == PRED) { adjacentNodeValues.put(node, new PredAndSucc(value)); checkPositive(++successorCount); return null; } else { // successor return (V) previousValue; } }
@Override @CanIgnoreReturnValue public V putEdgeValue(N nodeU, N nodeV, V value) { checkNotNull(nodeU, "nodeU"); checkNotNull(nodeV, "nodeV"); checkNotNull(value, "value"); if (!allowsSelfLoops()) { checkArgument(!nodeU.equals(nodeV), SELF_LOOPS_NOT_ALLOWED, nodeU); } GraphConnections<N, V> connectionsU = nodeConnections.get(nodeU); if (connectionsU == null) { connectionsU = addNodeInternal(nodeU); } V previousValue = connectionsU.addSuccessor(nodeV, value); GraphConnections<N, V> connectionsV = nodeConnections.get(nodeV); if (connectionsV == null) { connectionsV = addNodeInternal(nodeV); } connectionsV.addPredecessor(nodeU, value); if (previousValue == null) { checkPositive(++edgeCount); } return previousValue; }
@Override @CanIgnoreReturnValue public V putEdgeValue(N nodeU, N nodeV, V value) { checkNotNull(nodeU, "nodeU"); checkNotNull(nodeV, "nodeV"); checkNotNull(value, "value"); if (!allowsSelfLoops()) { checkArgument(!nodeU.equals(nodeV), SELF_LOOPS_NOT_ALLOWED, nodeU); } GraphConnections<N, V> connectionsU = nodeConnections.get(nodeU); if (connectionsU == null) { connectionsU = addNodeInternal(nodeU); } V previousValue = connectionsU.addSuccessor(nodeV, value); GraphConnections<N, V> connectionsV = nodeConnections.get(nodeV); if (connectionsV == null) { connectionsV = addNodeInternal(nodeV); } connectionsV.addPredecessor(nodeU, value); if (previousValue == null) { checkPositive(++edgeCount); } return previousValue; }
@Override @CanIgnoreReturnValue public V putEdgeValue(N nodeU, N nodeV, V value) { checkNotNull(nodeU, "nodeU"); checkNotNull(nodeV, "nodeV"); checkNotNull(value, "value"); if (!allowsSelfLoops()) { checkArgument(!nodeU.equals(nodeV), SELF_LOOPS_NOT_ALLOWED, nodeU); } GraphConnections<N, V> connectionsU = nodeConnections.get(nodeU); if (connectionsU == null) { connectionsU = addNodeInternal(nodeU); } V previousValue = connectionsU.addSuccessor(nodeV, value); GraphConnections<N, V> connectionsV = nodeConnections.get(nodeV); if (connectionsV == null) { connectionsV = addNodeInternal(nodeV); } connectionsV.addPredecessor(nodeU, value); if (previousValue == null) { checkPositive(++edgeCount); } return previousValue; }
@Override public void addInEdge(E edge, N node, boolean isSelfLoop) { if (isSelfLoop) { checkPositive(++selfLoopCount); } N previousNode = inEdgeMap.put(edge, node); checkState(previousNode == null); }
@Override public void addInEdge(E edge, N node, boolean isSelfLoop) { if (isSelfLoop) { checkPositive(++selfLoopCount); } N previousNode = inEdgeMap.put(edge, node); checkState(previousNode == null); }
@Override public void addPredecessor(N node, V unused) { Object previousValue = adjacentNodeValues.put(node, PRED); if (previousValue == null) { checkPositive(++predecessorCount); } else if (previousValue instanceof PredAndSucc) { // Restore previous PredAndSucc object. adjacentNodeValues.put(node, previousValue); } else if (previousValue != PRED) { // successor // Do NOT use method parameter value 'unused'. In directed graphs, successors store the value. adjacentNodeValues.put(node, new PredAndSucc(previousValue)); checkPositive(++predecessorCount); } }
@Override public void addPredecessor(N node, V unused) { Object previousValue = adjacentNodeValues.put(node, PRED); if (previousValue == null) { checkPositive(++predecessorCount); } else if (previousValue instanceof PredAndSucc) { // Restore previous PredAndSucc object. adjacentNodeValues.put(node, previousValue); } else if (previousValue != PRED) { // successor // Do NOT use method parameter value 'unused'. In directed graphs, successors store the value. adjacentNodeValues.put(node, new PredAndSucc(previousValue)); checkPositive(++predecessorCount); } }
@SuppressWarnings("unchecked") @Override public V addSuccessor(N node, V value) { Object previousValue = adjacentNodeValues.put(node, value); if (previousValue == null) { checkPositive(++successorCount); return null; } else if (previousValue instanceof PredAndSucc) { adjacentNodeValues.put(node, new PredAndSucc(value)); return (V) ((PredAndSucc) previousValue).successorValue; } else if (previousValue == PRED) { adjacentNodeValues.put(node, new PredAndSucc(value)); checkPositive(++successorCount); return null; } else { // successor return (V) previousValue; } }
@SuppressWarnings("unchecked") @Override public V addSuccessor(N node, V value) { Object previousValue = adjacentNodeValues.put(node, value); if (previousValue == null) { checkPositive(++successorCount); return null; } else if (previousValue instanceof PredAndSucc) { adjacentNodeValues.put(node, new PredAndSucc(value)); return (V) ((PredAndSucc) previousValue).successorValue; } else if (previousValue == PRED) { adjacentNodeValues.put(node, new PredAndSucc(value)); checkPositive(++successorCount); return null; } else { // successor return (V) previousValue; } }
@Override @CanIgnoreReturnValue public V putEdgeValue(N nodeU, N nodeV, V value) { checkNotNull(nodeU, "nodeU"); checkNotNull(nodeV, "nodeV"); checkNotNull(value, "value"); if (!allowsSelfLoops()) { checkArgument(!nodeU.equals(nodeV), SELF_LOOPS_NOT_ALLOWED, nodeU); } GraphConnections<N, V> connectionsU = nodeConnections.get(nodeU); if (connectionsU == null) { connectionsU = addNodeInternal(nodeU); } V previousValue = connectionsU.addSuccessor(nodeV, value); GraphConnections<N, V> connectionsV = nodeConnections.get(nodeV); if (connectionsV == null) { connectionsV = addNodeInternal(nodeV); } connectionsV.addPredecessor(nodeU, value); if (previousValue == null) { checkPositive(++edgeCount); } return previousValue; }
@Override @CanIgnoreReturnValue public V putEdgeValue(N nodeU, N nodeV, V value) { checkNotNull(nodeU, "nodeU"); checkNotNull(nodeV, "nodeV"); checkNotNull(value, "value"); if (!allowsSelfLoops()) { checkArgument(!nodeU.equals(nodeV), SELF_LOOPS_NOT_ALLOWED, nodeU); } GraphConnections<N, V> connectionsU = nodeConnections.get(nodeU); if (connectionsU == null) { connectionsU = addNodeInternal(nodeU); } V previousValue = connectionsU.addSuccessor(nodeV, value); GraphConnections<N, V> connectionsV = nodeConnections.get(nodeV); if (connectionsV == null) { connectionsV = addNodeInternal(nodeV); } connectionsV.addPredecessor(nodeU, value); if (previousValue == null) { checkPositive(++edgeCount); } return previousValue; }