.class public final Lcom/google/common/graph/Graphs; .super Ljava/lang/Object; .source "Graphs.java" # annotations .annotation runtime Lcom/google/common/graph/ElementTypesAreNonnullByDefault; .end annotation .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/google/common/graph/Graphs$NodeVisitState;, Lcom/google/common/graph/Graphs$TransposedNetwork;, Lcom/google/common/graph/Graphs$TransposedValueGraph;, Lcom/google/common/graph/Graphs$TransposedGraph; } .end annotation # direct methods .method private constructor ()V .locals 0 .line 49 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method private static canTraverseWithoutReusingEdge(Lcom/google/common/graph/Graph;Ljava/lang/Object;Ljava/lang/Object;)Z .locals 0 .param p2 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "*>;", "Ljava/lang/Object;", "Ljava/lang/Object;", ")Z" } .end annotation .line 134 invoke-interface {p0}, Lcom/google/common/graph/Graph;->isDirected()Z move-result p0 if-nez p0, :cond_1 invoke-static {p2, p1}, Lcom/google/common/base/Objects;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z move-result p0 if-nez p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 return p0 :cond_1 :goto_0 const/4 p0, 0x1 return p0 .end method .method static checkNonNegative(I)I .locals 2 if-ltz p0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 const-string v1, "Not true that %s is non-negative." .line 594 invoke-static {v0, v1, p0}, Lcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/String;I)V return p0 .end method .method static checkNonNegative(J)J .locals 2 const-wide/16 v0, 0x0 cmp-long v0, p0, v0 if-ltz v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 const-string v1, "Not true that %s is non-negative." .line 600 invoke-static {v0, v1, p0, p1}, Lcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/String;J)V return-wide p0 .end method .method static checkPositive(I)I .locals 2 if-lez p0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 const-string v1, "Not true that %s is positive." .line 606 invoke-static {v0, v1, p0}, Lcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/String;I)V return p0 .end method .method static checkPositive(J)J .locals 2 const-wide/16 v0, 0x0 cmp-long v0, p0, v0 if-lez v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 const-string v1, "Not true that %s is positive." .line 612 invoke-static {v0, v1, p0, p1}, Lcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/String;J)V return-wide p0 .end method .method public static copyOf(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/MutableGraph; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;)", "Lcom/google/common/graph/MutableGraph<", "TN;>;" } .end annotation .line 548 invoke-static {p0}, Lcom/google/common/graph/GraphBuilder;->from(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/GraphBuilder; move-result-object v0 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/GraphBuilder;->expectedNodeCount(I)Lcom/google/common/graph/GraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/GraphBuilder;->build()Lcom/google/common/graph/MutableGraph; move-result-object v0 .line 549 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_0 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_0 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 .line 550 invoke-interface {v0, v2}, Lcom/google/common/graph/MutableGraph;->addNode(Ljava/lang/Object;)Z goto :goto_0 .line 552 :cond_0 invoke-interface {p0}, Lcom/google/common/graph/Graph;->edges()Ljava/util/Set; move-result-object p0 invoke-interface {p0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object p0 :goto_1 invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1 invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 check-cast v1, Lcom/google/common/graph/EndpointPair; .line 553 invoke-virtual {v1}, Lcom/google/common/graph/EndpointPair;->nodeU()Ljava/lang/Object; move-result-object v2 invoke-virtual {v1}, Lcom/google/common/graph/EndpointPair;->nodeV()Ljava/lang/Object; move-result-object v1 invoke-interface {v0, v2, v1}, Lcom/google/common/graph/MutableGraph;->putEdge(Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_1 :cond_1 return-object v0 .end method .method public static copyOf(Lcom/google/common/graph/Network;)Lcom/google/common/graph/MutableNetwork; .locals 5 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Network<", "TN;TE;>;)", "Lcom/google/common/graph/MutableNetwork<", "TN;TE;>;" } .end annotation .line 578 invoke-static {p0}, Lcom/google/common/graph/NetworkBuilder;->from(Lcom/google/common/graph/Network;)Lcom/google/common/graph/NetworkBuilder; move-result-object v0 .line 579 invoke-interface {p0}, Lcom/google/common/graph/Network;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/NetworkBuilder;->expectedNodeCount(I)Lcom/google/common/graph/NetworkBuilder; move-result-object v0 .line 580 invoke-interface {p0}, Lcom/google/common/graph/Network;->edges()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/NetworkBuilder;->expectedEdgeCount(I)Lcom/google/common/graph/NetworkBuilder; move-result-object v0 .line 581 invoke-virtual {v0}, Lcom/google/common/graph/NetworkBuilder;->build()Lcom/google/common/graph/MutableNetwork; move-result-object v0 .line 582 invoke-interface {p0}, Lcom/google/common/graph/Network;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_0 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_0 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 .line 583 invoke-interface {v0, v2}, Lcom/google/common/graph/MutableNetwork;->addNode(Ljava/lang/Object;)Z goto :goto_0 .line 585 :cond_0 invoke-interface {p0}, Lcom/google/common/graph/Network;->edges()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_1 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_1 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 .line 586 invoke-interface {p0, v2}, Lcom/google/common/graph/Network;->incidentNodes(Ljava/lang/Object;)Lcom/google/common/graph/EndpointPair; move-result-object v3 .line 587 invoke-virtual {v3}, Lcom/google/common/graph/EndpointPair;->nodeU()Ljava/lang/Object; move-result-object v4 invoke-virtual {v3}, Lcom/google/common/graph/EndpointPair;->nodeV()Ljava/lang/Object; move-result-object v3 invoke-interface {v0, v4, v3, v2}, Lcom/google/common/graph/MutableNetwork;->addEdge(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_1 :cond_1 return-object v0 .end method .method public static copyOf(Lcom/google/common/graph/ValueGraph;)Lcom/google/common/graph/MutableValueGraph; .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/ValueGraph<", "TN;TV;>;)", "Lcom/google/common/graph/MutableValueGraph<", "TN;TV;>;" } .end annotation .line 561 invoke-static {p0}, Lcom/google/common/graph/ValueGraphBuilder;->from(Lcom/google/common/graph/ValueGraph;)Lcom/google/common/graph/ValueGraphBuilder; move-result-object v0 invoke-interface {p0}, Lcom/google/common/graph/ValueGraph;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/ValueGraphBuilder;->expectedNodeCount(I)Lcom/google/common/graph/ValueGraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/ValueGraphBuilder;->build()Lcom/google/common/graph/MutableValueGraph; move-result-object v0 .line 562 invoke-interface {p0}, Lcom/google/common/graph/ValueGraph;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_0 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_0 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 .line 563 invoke-interface {v0, v2}, Lcom/google/common/graph/MutableValueGraph;->addNode(Ljava/lang/Object;)Z goto :goto_0 .line 565 :cond_0 invoke-interface {p0}, Lcom/google/common/graph/ValueGraph;->edges()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_1 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_1 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/common/graph/EndpointPair; .line 568 invoke-virtual {v2}, Lcom/google/common/graph/EndpointPair;->nodeU()Ljava/lang/Object; move-result-object v3 .line 569 invoke-virtual {v2}, Lcom/google/common/graph/EndpointPair;->nodeV()Ljava/lang/Object; move-result-object v4 .line 570 invoke-virtual {v2}, Lcom/google/common/graph/EndpointPair;->nodeU()Ljava/lang/Object; move-result-object v5 invoke-virtual {v2}, Lcom/google/common/graph/EndpointPair;->nodeV()Ljava/lang/Object; move-result-object v2 const/4 v6, 0x0 invoke-interface {p0, v5, v2, v6}, Lcom/google/common/graph/ValueGraph;->edgeValueOrDefault(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; move-result-object v2 invoke-static {v2}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v2 .line 567 invoke-interface {v0, v3, v4, v2}, Lcom/google/common/graph/MutableValueGraph;->putEdgeValue(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_1 :cond_1 return-object v0 .end method .method public static hasCycle(Lcom/google/common/graph/Graph;)Z .locals 6 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;)Z" } .end annotation .line 61 invoke-interface {p0}, Lcom/google/common/graph/Graph;->edges()Ljava/util/Set; move-result-object v0 invoke-interface {v0}, Ljava/util/Set;->size()I move-result v0 const/4 v1, 0x0 if-nez v0, :cond_0 return v1 .line 65 :cond_0 invoke-interface {p0}, Lcom/google/common/graph/Graph;->isDirected()Z move-result v2 const/4 v3, 0x1 if-nez v2, :cond_1 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v2 invoke-interface {v2}, Ljava/util/Set;->size()I move-result v2 if-lt v0, v2, :cond_1 return v3 .line 70 :cond_1 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v0 invoke-interface {v0}, Ljava/util/Set;->size()I move-result v0 invoke-static {v0}, Lcom/google/common/collect/Maps;->newHashMapWithExpectedSize(I)Ljava/util/HashMap; move-result-object v0 .line 71 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v2 invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v2 :cond_2 invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_3 invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 const/4 v5, 0x0 .line 72 invoke-static {p0, v0, v4, v5}, Lcom/google/common/graph/Graphs;->subgraphHasCycle(Lcom/google/common/graph/Graph;Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_2 return v3 :cond_3 return v1 .end method .method public static hasCycle(Lcom/google/common/graph/Network;)Z .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Network<", "**>;)Z" } .end annotation .line 89 invoke-interface {p0}, Lcom/google/common/graph/Network;->isDirected()Z move-result v0 if-nez v0, :cond_0 .line 90 invoke-interface {p0}, Lcom/google/common/graph/Network;->allowsParallelEdges()Z move-result v0 if-eqz v0, :cond_0 .line 91 invoke-interface {p0}, Lcom/google/common/graph/Network;->edges()Ljava/util/Set; move-result-object v0 invoke-interface {v0}, Ljava/util/Set;->size()I move-result v0 invoke-interface {p0}, Lcom/google/common/graph/Network;->asGraph()Lcom/google/common/graph/Graph; move-result-object v1 invoke-interface {v1}, Lcom/google/common/graph/Graph;->edges()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->size()I move-result v1 if-le v0, v1, :cond_0 const/4 p0, 0x1 return p0 .line 94 :cond_0 invoke-interface {p0}, Lcom/google/common/graph/Network;->asGraph()Lcom/google/common/graph/Graph; move-result-object p0 invoke-static {p0}, Lcom/google/common/graph/Graphs;->hasCycle(Lcom/google/common/graph/Graph;)Z move-result p0 return p0 .end method .method public static inducedSubgraph(Lcom/google/common/graph/Graph;Ljava/lang/Iterable;)Lcom/google/common/graph/MutableGraph; .locals 5 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;", "Ljava/lang/Iterable<", "+TN;>;)", "Lcom/google/common/graph/MutableGraph<", "TN;>;" } .end annotation .line 471 instance-of v0, p1, Ljava/util/Collection; if-eqz v0, :cond_0 .line 472 invoke-static {p0}, Lcom/google/common/graph/GraphBuilder;->from(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/GraphBuilder; move-result-object v0 move-object v1, p1 check-cast v1, Ljava/util/Collection; invoke-interface {v1}, Ljava/util/Collection;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/GraphBuilder;->expectedNodeCount(I)Lcom/google/common/graph/GraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/GraphBuilder;->build()Lcom/google/common/graph/MutableGraph; move-result-object v0 goto :goto_0 .line 473 :cond_0 invoke-static {p0}, Lcom/google/common/graph/GraphBuilder;->from(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/GraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/GraphBuilder;->build()Lcom/google/common/graph/MutableGraph; move-result-object v0 .line 474 :goto_0 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_1 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 475 invoke-interface {v0, v1}, Lcom/google/common/graph/MutableGraph;->addNode(Ljava/lang/Object;)Z goto :goto_1 .line 477 :cond_1 invoke-interface {v0}, Lcom/google/common/graph/MutableGraph;->nodes()Ljava/util/Set; move-result-object p1 invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object p1 :cond_2 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_4 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 478 invoke-interface {p0, v1}, Lcom/google/common/graph/Graph;->successors(Ljava/lang/Object;)Ljava/util/Set; move-result-object v2 invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v2 :cond_3 :goto_2 invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z move-result v3 if-eqz v3, :cond_2 invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v3 .line 479 invoke-interface {v0}, Lcom/google/common/graph/MutableGraph;->nodes()Ljava/util/Set; move-result-object v4 invoke-interface {v4, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_3 .line 480 invoke-interface {v0, v1, v3}, Lcom/google/common/graph/MutableGraph;->putEdge(Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_2 :cond_4 return-object v0 .end method .method public static inducedSubgraph(Lcom/google/common/graph/Network;Ljava/lang/Iterable;)Lcom/google/common/graph/MutableNetwork; .locals 6 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Network<", "TN;TE;>;", "Ljava/lang/Iterable<", "+TN;>;)", "Lcom/google/common/graph/MutableNetwork<", "TN;TE;>;" } .end annotation .line 529 instance-of v0, p1, Ljava/util/Collection; if-eqz v0, :cond_0 .line 530 invoke-static {p0}, Lcom/google/common/graph/NetworkBuilder;->from(Lcom/google/common/graph/Network;)Lcom/google/common/graph/NetworkBuilder; move-result-object v0 move-object v1, p1 check-cast v1, Ljava/util/Collection; invoke-interface {v1}, Ljava/util/Collection;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/NetworkBuilder;->expectedNodeCount(I)Lcom/google/common/graph/NetworkBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/NetworkBuilder;->build()Lcom/google/common/graph/MutableNetwork; move-result-object v0 goto :goto_0 .line 531 :cond_0 invoke-static {p0}, Lcom/google/common/graph/NetworkBuilder;->from(Lcom/google/common/graph/Network;)Lcom/google/common/graph/NetworkBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/NetworkBuilder;->build()Lcom/google/common/graph/MutableNetwork; move-result-object v0 .line 532 :goto_0 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_1 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 533 invoke-interface {v0, v1}, Lcom/google/common/graph/MutableNetwork;->addNode(Ljava/lang/Object;)Z goto :goto_1 .line 535 :cond_1 invoke-interface {v0}, Lcom/google/common/graph/MutableNetwork;->nodes()Ljava/util/Set; move-result-object p1 invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object p1 :cond_2 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_4 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 536 invoke-interface {p0, v1}, Lcom/google/common/graph/Network;->outEdges(Ljava/lang/Object;)Ljava/util/Set; move-result-object v2 invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v2 :cond_3 :goto_2 invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z move-result v3 if-eqz v3, :cond_2 invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v3 .line 537 invoke-interface {p0, v3}, Lcom/google/common/graph/Network;->incidentNodes(Ljava/lang/Object;)Lcom/google/common/graph/EndpointPair; move-result-object v4 invoke-virtual {v4, v1}, Lcom/google/common/graph/EndpointPair;->adjacentNode(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v4 .line 538 invoke-interface {v0}, Lcom/google/common/graph/MutableNetwork;->nodes()Ljava/util/Set; move-result-object v5 invoke-interface {v5, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_3 .line 539 invoke-interface {v0, v1, v4, v3}, Lcom/google/common/graph/MutableNetwork;->addEdge(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_2 :cond_4 return-object v0 .end method .method public static inducedSubgraph(Lcom/google/common/graph/ValueGraph;Ljava/lang/Iterable;)Lcom/google/common/graph/MutableValueGraph; .locals 5 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/ValueGraph<", "TN;TV;>;", "Ljava/lang/Iterable<", "+TN;>;)", "Lcom/google/common/graph/MutableValueGraph<", "TN;TV;>;" } .end annotation .line 498 instance-of v0, p1, Ljava/util/Collection; if-eqz v0, :cond_0 .line 499 invoke-static {p0}, Lcom/google/common/graph/ValueGraphBuilder;->from(Lcom/google/common/graph/ValueGraph;)Lcom/google/common/graph/ValueGraphBuilder; move-result-object v0 move-object v1, p1 check-cast v1, Ljava/util/Collection; invoke-interface {v1}, Ljava/util/Collection;->size()I move-result v1 invoke-virtual {v0, v1}, Lcom/google/common/graph/ValueGraphBuilder;->expectedNodeCount(I)Lcom/google/common/graph/ValueGraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/ValueGraphBuilder;->build()Lcom/google/common/graph/MutableValueGraph; move-result-object v0 goto :goto_0 .line 500 :cond_0 invoke-static {p0}, Lcom/google/common/graph/ValueGraphBuilder;->from(Lcom/google/common/graph/ValueGraph;)Lcom/google/common/graph/ValueGraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/ValueGraphBuilder;->build()Lcom/google/common/graph/MutableValueGraph; move-result-object v0 .line 501 :goto_0 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_1 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 502 invoke-interface {v0, v1}, Lcom/google/common/graph/MutableValueGraph;->addNode(Ljava/lang/Object;)Z goto :goto_1 .line 504 :cond_1 invoke-interface {v0}, Lcom/google/common/graph/MutableValueGraph;->nodes()Ljava/util/Set; move-result-object p1 invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object p1 :cond_2 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_4 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 505 invoke-interface {p0, v1}, Lcom/google/common/graph/ValueGraph;->successors(Ljava/lang/Object;)Ljava/util/Set; move-result-object v2 invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v2 :cond_3 :goto_2 invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z move-result v3 if-eqz v3, :cond_2 invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v3 .line 506 invoke-interface {v0}, Lcom/google/common/graph/MutableValueGraph;->nodes()Ljava/util/Set; move-result-object v4 invoke-interface {v4, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_3 const/4 v4, 0x0 .line 511 invoke-interface {p0, v1, v3, v4}, Lcom/google/common/graph/ValueGraph;->edgeValueOrDefault(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; move-result-object v4 invoke-static {v4}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v4 .line 508 invoke-interface {v0, v1, v3, v4}, Lcom/google/common/graph/MutableValueGraph;->putEdgeValue(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_2 :cond_4 return-object v0 .end method .method public static reachableNodes(Lcom/google/common/graph/Graph;Ljava/lang/Object;)Ljava/util/Set; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;TN;)", "Ljava/util/Set<", "TN;>;" } .end annotation .line 197 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v0 invoke-interface {v0, p1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v0 const-string v1, "Node %s is not an element of this graph." invoke-static {v0, v1, p1}, Lcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V .line 198 invoke-static {p0}, Lcom/google/common/graph/Traverser;->forGraph(Lcom/google/common/graph/SuccessorsFunction;)Lcom/google/common/graph/Traverser; move-result-object p0 invoke-virtual {p0, p1}, Lcom/google/common/graph/Traverser;->breadthFirst(Ljava/lang/Object;)Ljava/lang/Iterable; move-result-object p0 invoke-static {p0}, Lcom/google/common/collect/ImmutableSet;->copyOf(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableSet; move-result-object p0 return-object p0 .end method .method private static subgraphHasCycle(Lcom/google/common/graph/Graph;Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Z .locals 5 .param p3 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;", "Ljava/util/Map<", "Ljava/lang/Object;", "Lcom/google/common/graph/Graphs$NodeVisitState;", ">;TN;TN;)Z" } .end annotation .line 107 invoke-interface {p1, p2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/google/common/graph/Graphs$NodeVisitState; .line 108 sget-object v1, Lcom/google/common/graph/Graphs$NodeVisitState;->COMPLETE:Lcom/google/common/graph/Graphs$NodeVisitState; const/4 v2, 0x0 if-ne v0, v1, :cond_0 return v2 .line 111 :cond_0 sget-object v1, Lcom/google/common/graph/Graphs$NodeVisitState;->PENDING:Lcom/google/common/graph/Graphs$NodeVisitState; const/4 v3, 0x1 if-ne v0, v1, :cond_1 return v3 .line 115 :cond_1 sget-object v0, Lcom/google/common/graph/Graphs$NodeVisitState;->PENDING:Lcom/google/common/graph/Graphs$NodeVisitState; invoke-interface {p1, p2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 116 invoke-interface {p0, p2}, Lcom/google/common/graph/Graph;->successors(Ljava/lang/Object;)Ljava/util/Set; move-result-object v0 invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v0 :cond_2 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_3 invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 .line 117 invoke-static {p0, v1, p3}, Lcom/google/common/graph/Graphs;->canTraverseWithoutReusingEdge(Lcom/google/common/graph/Graph;Ljava/lang/Object;Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_2 .line 118 invoke-static {p0, p1, v1, p2}, Lcom/google/common/graph/Graphs;->subgraphHasCycle(Lcom/google/common/graph/Graph;Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Z move-result v1 if-eqz v1, :cond_2 return v3 .line 122 :cond_3 sget-object p0, Lcom/google/common/graph/Graphs$NodeVisitState;->COMPLETE:Lcom/google/common/graph/Graphs$NodeVisitState; invoke-interface {p1, p2, p0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; return v2 .end method .method public static transitiveClosure(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/Graph; .locals 10 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;)", "Lcom/google/common/graph/Graph<", "TN;>;" } .end annotation .line 153 invoke-static {p0}, Lcom/google/common/graph/GraphBuilder;->from(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/GraphBuilder; move-result-object v0 const/4 v1, 0x1 invoke-virtual {v0, v1}, Lcom/google/common/graph/GraphBuilder;->allowsSelfLoops(Z)Lcom/google/common/graph/GraphBuilder; move-result-object v0 invoke-virtual {v0}, Lcom/google/common/graph/GraphBuilder;->build()Lcom/google/common/graph/MutableGraph; move-result-object v0 .line 157 invoke-interface {p0}, Lcom/google/common/graph/Graph;->isDirected()Z move-result v2 if-eqz v2, :cond_1 .line 159 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v1 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v1 :cond_0 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_4 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 .line 160 invoke-static {p0, v2}, Lcom/google/common/graph/Graphs;->reachableNodes(Lcom/google/common/graph/Graph;Ljava/lang/Object;)Ljava/util/Set; move-result-object v3 invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v3 :goto_0 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_0 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 .line 161 invoke-interface {v0, v2, v4}, Lcom/google/common/graph/MutableGraph;->putEdge(Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_0 .line 167 :cond_1 new-instance v2, Ljava/util/HashSet; invoke-direct {v2}, Ljava/util/HashSet;->()V .line 168 invoke-interface {p0}, Lcom/google/common/graph/Graph;->nodes()Ljava/util/Set; move-result-object v3 invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v3 :cond_2 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_4 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 .line 169 invoke-interface {v2, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v5 if-nez v5, :cond_2 .line 170 invoke-static {p0, v4}, Lcom/google/common/graph/Graphs;->reachableNodes(Lcom/google/common/graph/Graph;Ljava/lang/Object;)Ljava/util/Set; move-result-object v4 .line 171 invoke-interface {v2, v4}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z .line 173 invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v5 move v6, v1 :goto_1 invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z move-result v7 if-eqz v7, :cond_2 invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v7 add-int/lit8 v8, v6, 0x1 .line 174 invoke-static {v4, v6}, Lcom/google/common/collect/Iterables;->limit(Ljava/lang/Iterable;I)Ljava/lang/Iterable; move-result-object v6 invoke-interface {v6}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object v6 :goto_2 invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z move-result v9 if-eqz v9, :cond_3 invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v9 .line 175 invoke-interface {v0, v7, v9}, Lcom/google/common/graph/MutableGraph;->putEdge(Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_2 :cond_3 move v6, v8 goto :goto_1 :cond_4 return-object v0 .end method .method static transpose(Lcom/google/common/graph/EndpointPair;)Lcom/google/common/graph/EndpointPair; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/EndpointPair<", "TN;>;)", "Lcom/google/common/graph/EndpointPair<", "TN;>;" } .end annotation .line 254 invoke-virtual {p0}, Lcom/google/common/graph/EndpointPair;->isOrdered()Z move-result v0 if-eqz v0, :cond_0 .line 255 invoke-virtual {p0}, Lcom/google/common/graph/EndpointPair;->target()Ljava/lang/Object; move-result-object v0 invoke-virtual {p0}, Lcom/google/common/graph/EndpointPair;->source()Ljava/lang/Object; move-result-object p0 invoke-static {v0, p0}, Lcom/google/common/graph/EndpointPair;->ordered(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/graph/EndpointPair; move-result-object p0 :cond_0 return-object p0 .end method .method public static transpose(Lcom/google/common/graph/Graph;)Lcom/google/common/graph/Graph; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Graph<", "TN;>;)", "Lcom/google/common/graph/Graph<", "TN;>;" } .end annotation .line 210 invoke-interface {p0}, Lcom/google/common/graph/Graph;->isDirected()Z move-result v0 if-nez v0, :cond_0 return-object p0 .line 214 :cond_0 instance-of v0, p0, Lcom/google/common/graph/Graphs$TransposedGraph; if-eqz v0, :cond_1 .line 215 check-cast p0, Lcom/google/common/graph/Graphs$TransposedGraph; invoke-static {p0}, Lcom/google/common/graph/Graphs$TransposedGraph;->access$000(Lcom/google/common/graph/Graphs$TransposedGraph;)Lcom/google/common/graph/Graph; move-result-object p0 return-object p0 .line 218 :cond_1 new-instance v0, Lcom/google/common/graph/Graphs$TransposedGraph; invoke-direct {v0, p0}, Lcom/google/common/graph/Graphs$TransposedGraph;->(Lcom/google/common/graph/Graph;)V return-object v0 .end method .method public static transpose(Lcom/google/common/graph/Network;)Lcom/google/common/graph/Network; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/Network<", "TN;TE;>;)", "Lcom/google/common/graph/Network<", "TN;TE;>;" } .end annotation .line 242 invoke-interface {p0}, Lcom/google/common/graph/Network;->isDirected()Z move-result v0 if-nez v0, :cond_0 return-object p0 .line 246 :cond_0 instance-of v0, p0, Lcom/google/common/graph/Graphs$TransposedNetwork; if-eqz v0, :cond_1 .line 247 check-cast p0, Lcom/google/common/graph/Graphs$TransposedNetwork; invoke-static {p0}, Lcom/google/common/graph/Graphs$TransposedNetwork;->access$200(Lcom/google/common/graph/Graphs$TransposedNetwork;)Lcom/google/common/graph/Network; move-result-object p0 return-object p0 .line 250 :cond_1 new-instance v0, Lcom/google/common/graph/Graphs$TransposedNetwork; invoke-direct {v0, p0}, Lcom/google/common/graph/Graphs$TransposedNetwork;->(Lcom/google/common/graph/Network;)V return-object v0 .end method .method public static transpose(Lcom/google/common/graph/ValueGraph;)Lcom/google/common/graph/ValueGraph; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/graph/ValueGraph<", "TN;TV;>;)", "Lcom/google/common/graph/ValueGraph<", "TN;TV;>;" } .end annotation .line 226 invoke-interface {p0}, Lcom/google/common/graph/ValueGraph;->isDirected()Z move-result v0 if-nez v0, :cond_0 return-object p0 .line 230 :cond_0 instance-of v0, p0, Lcom/google/common/graph/Graphs$TransposedValueGraph; if-eqz v0, :cond_1 .line 231 check-cast p0, Lcom/google/common/graph/Graphs$TransposedValueGraph; invoke-static {p0}, Lcom/google/common/graph/Graphs$TransposedValueGraph;->access$100(Lcom/google/common/graph/Graphs$TransposedValueGraph;)Lcom/google/common/graph/ValueGraph; move-result-object p0 return-object p0 .line 234 :cond_1 new-instance v0, Lcom/google/common/graph/Graphs$TransposedValueGraph; invoke-direct {v0, p0}, Lcom/google/common/graph/Graphs$TransposedValueGraph;->(Lcom/google/common/graph/ValueGraph;)V return-object v0 .end method