163 lines
7.3 KiB
Java
163 lines
7.3 KiB
Java
|
package com.google.common.graph;
|
||
|
|
||
|
import com.google.common.base.Function;
|
||
|
import com.google.common.base.Preconditions;
|
||
|
import com.google.common.collect.ImmutableMap;
|
||
|
import com.google.common.collect.Maps;
|
||
|
import java.util.Set;
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.Graph
|
||
|
public final /* bridge */ /* synthetic */ Set adjacentNodes(Object obj) {
|
||
|
return super.adjacentNodes(obj);
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.Graph
|
||
|
public final /* bridge */ /* synthetic */ boolean allowsSelfLoops() {
|
||
|
return super.allowsSelfLoops();
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.ValueGraph
|
||
|
public final /* bridge */ /* synthetic */ Object edgeValueOrDefault(EndpointPair endpointPair, Object obj) {
|
||
|
return super.edgeValueOrDefault(endpointPair, obj);
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.ValueGraph
|
||
|
public final /* bridge */ /* synthetic */ Object edgeValueOrDefault(Object obj, Object obj2, Object obj3) {
|
||
|
return super.edgeValueOrDefault(obj, obj2, obj3);
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.AbstractValueGraph, com.google.common.graph.AbstractBaseGraph, com.google.common.graph.BaseGraph
|
||
|
public final /* bridge */ /* synthetic */ boolean hasEdgeConnecting(EndpointPair endpointPair) {
|
||
|
return super.hasEdgeConnecting(endpointPair);
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.AbstractValueGraph, com.google.common.graph.AbstractBaseGraph, com.google.common.graph.BaseGraph
|
||
|
public final /* bridge */ /* synthetic */ boolean hasEdgeConnecting(Object obj, Object obj2) {
|
||
|
return super.hasEdgeConnecting(obj, obj2);
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.AbstractValueGraph, com.google.common.graph.AbstractBaseGraph, com.google.common.graph.BaseGraph
|
||
|
public final /* bridge */ /* synthetic */ Set incidentEdges(Object obj) {
|
||
|
return super.incidentEdges(obj);
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.Graph
|
||
|
public final /* bridge */ /* synthetic */ boolean isDirected() {
|
||
|
return super.isDirected();
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.Graph
|
||
|
public final /* bridge */ /* synthetic */ ElementOrder nodeOrder() {
|
||
|
return super.nodeOrder();
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.Graph
|
||
|
public final /* bridge */ /* synthetic */ Set nodes() {
|
||
|
return super.nodes();
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.PredecessorsFunction
|
||
|
public final /* bridge */ /* synthetic */ Set predecessors(Object obj) {
|
||
|
return super.predecessors((ImmutableValueGraph<N, V>) obj);
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.graph.StandardValueGraph, com.google.common.graph.BaseGraph, com.google.common.graph.SuccessorsFunction
|
||
|
public final /* bridge */ /* synthetic */ Set successors(Object obj) {
|
||
|
return super.successors((ImmutableValueGraph<N, V>) obj);
|
||
|
}
|
||
|
|
||
|
private ImmutableValueGraph(ValueGraph<N, V> valueGraph) {
|
||
|
super(ValueGraphBuilder.from(valueGraph), getNodeConnections(valueGraph), valueGraph.edges().size());
|
||
|
}
|
||
|
|
||
|
public static <N, V> ImmutableValueGraph<N, V> copyOf(ValueGraph<N, V> valueGraph) {
|
||
|
if (valueGraph instanceof ImmutableValueGraph) {
|
||
|
return (ImmutableValueGraph) valueGraph;
|
||
|
}
|
||
|
return new ImmutableValueGraph<>(valueGraph);
|
||
|
}
|
||
|
|
||
|
@Deprecated
|
||
|
public static <N, V> ImmutableValueGraph<N, V> copyOf(ImmutableValueGraph<N, V> immutableValueGraph) {
|
||
|
return (ImmutableValueGraph) Preconditions.checkNotNull(immutableValueGraph);
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.AbstractValueGraph, com.google.common.graph.AbstractBaseGraph, com.google.common.graph.BaseGraph
|
||
|
public final ElementOrder<N> incidentEdgeOrder() {
|
||
|
return ElementOrder.stable();
|
||
|
}
|
||
|
|
||
|
@Override // com.google.common.graph.AbstractValueGraph, com.google.common.graph.ValueGraph
|
||
|
public final ImmutableGraph<N> asGraph() {
|
||
|
return new ImmutableGraph<>(this);
|
||
|
}
|
||
|
|
||
|
private static <N, V> ImmutableMap<N, GraphConnections<N, V>> getNodeConnections(ValueGraph<N, V> valueGraph) {
|
||
|
ImmutableMap.Builder builder = ImmutableMap.builder();
|
||
|
for (N n : valueGraph.nodes()) {
|
||
|
builder.put(n, connectionsOf(valueGraph, n));
|
||
|
}
|
||
|
return builder.build();
|
||
|
}
|
||
|
|
||
|
private static <N, V> GraphConnections<N, V> connectionsOf(ValueGraph<N, V> valueGraph, N n) {
|
||
|
Function<N, V> function = new Function<N, V>(valueGraph, n) { // from class: com.google.common.graph.ImmutableValueGraph.1
|
||
|
final ValueGraph val$graph;
|
||
|
final Object val$node;
|
||
|
|
||
|
{
|
||
|
this.val$graph = valueGraph;
|
||
|
this.val$node = n;
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // com.google.common.base.Function
|
||
|
public V apply(N n2) {
|
||
|
return (V) this.val$graph.edgeValueOrDefault(this.val$node, n2, null);
|
||
|
}
|
||
|
};
|
||
|
if (valueGraph.isDirected()) {
|
||
|
return DirectedGraphConnections.ofImmutable(n, valueGraph.incidentEdges(n), function);
|
||
|
}
|
||
|
return UndirectedGraphConnections.ofImmutable(Maps.asMap(valueGraph.adjacentNodes(n), function));
|
||
|
}
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public static class Builder<N, V> {
|
||
|
private final MutableValueGraph<N, V> mutableValueGraph;
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
public Builder(ValueGraphBuilder<N, V> valueGraphBuilder) {
|
||
|
this.mutableValueGraph = valueGraphBuilder.copy().incidentEdgeOrder(ElementOrder.stable()).build();
|
||
|
}
|
||
|
|
||
|
public Builder<N, V> addNode(N n) {
|
||
|
this.mutableValueGraph.addNode(n);
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public Builder<N, V> putEdgeValue(N n, N n2, V v) {
|
||
|
this.mutableValueGraph.putEdgeValue(n, n2, v);
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public Builder<N, V> putEdgeValue(EndpointPair<N> endpointPair, V v) {
|
||
|
this.mutableValueGraph.putEdgeValue(endpointPair, v);
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public ImmutableValueGraph<N, V> build() {
|
||
|
return ImmutableValueGraph.copyOf(this.mutableValueGraph);
|
||
|
}
|
||
|
}
|
||
|
}
|