1 /* 2 * Copyright (C) 2016 The Guava Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.common.graph; 18 19 import java.util.Set; 20 21 /** 22 * A class to allow {@link Graph} implementations to be backed by a {@link BaseGraph}. This is not 23 * currently planned to be released as a general-purpose forwarding class. 24 * 25 * @author James Sexton 26 */ 27 @ElementTypesAreNonnullByDefault 28 abstract class ForwardingGraph<N> extends AbstractGraph<N> { 29 delegate()30 abstract BaseGraph<N> delegate(); 31 32 @Override nodes()33 public Set<N> nodes() { 34 return delegate().nodes(); 35 } 36 37 /** 38 * Defer to {@link AbstractGraph#edges()} (based on {@link #successors(Object)}) for full edges() 39 * implementation. 40 */ 41 @Override edgeCount()42 protected long edgeCount() { 43 return delegate().edges().size(); 44 } 45 46 @Override isDirected()47 public boolean isDirected() { 48 return delegate().isDirected(); 49 } 50 51 @Override allowsSelfLoops()52 public boolean allowsSelfLoops() { 53 return delegate().allowsSelfLoops(); 54 } 55 56 @Override nodeOrder()57 public ElementOrder<N> nodeOrder() { 58 return delegate().nodeOrder(); 59 } 60 61 @Override incidentEdgeOrder()62 public ElementOrder<N> incidentEdgeOrder() { 63 return delegate().incidentEdgeOrder(); 64 } 65 66 @Override adjacentNodes(N node)67 public Set<N> adjacentNodes(N node) { 68 return delegate().adjacentNodes(node); 69 } 70 71 @Override predecessors(N node)72 public Set<N> predecessors(N node) { 73 return delegate().predecessors(node); 74 } 75 76 @Override successors(N node)77 public Set<N> successors(N node) { 78 return delegate().successors(node); 79 } 80 81 @Override incidentEdges(N node)82 public Set<EndpointPair<N>> incidentEdges(N node) { 83 return delegate().incidentEdges(node); 84 } 85 86 @Override degree(N node)87 public int degree(N node) { 88 return delegate().degree(node); 89 } 90 91 @Override inDegree(N node)92 public int inDegree(N node) { 93 return delegate().inDegree(node); 94 } 95 96 @Override outDegree(N node)97 public int outDegree(N node) { 98 return delegate().outDegree(node); 99 } 100 101 @Override hasEdgeConnecting(N nodeU, N nodeV)102 public boolean hasEdgeConnecting(N nodeU, N nodeV) { 103 return delegate().hasEdgeConnecting(nodeU, nodeV); 104 } 105 106 @Override hasEdgeConnecting(EndpointPair<N> endpoints)107 public boolean hasEdgeConnecting(EndpointPair<N> endpoints) { 108 return delegate().hasEdgeConnecting(endpoints); 109 } 110 } 111