All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.oliviercailloux.j_voting.graph.ForwardingGraph Maven / Gradle / Ivy

The newest version!
package io.github.oliviercailloux.j_voting.graph;

import java.util.Set;

import com.google.common.graph.AbstractGraph;
import com.google.common.graph.ElementOrder;
import com.google.common.graph.EndpointPair;
import com.google.common.graph.Graph;

/**
 * A class to allow {@link Graph} implementations to be backed by a BaseGraph.
 * This class is a copy
 * of a Guava class which is not currently planned to be released as a
 * general-purpose forwarding class.
 *
 * @author James Sexton
 */
public abstract class ForwardingGraph extends AbstractGraph {

	protected abstract Graph delegate();

	@Override
	public Set nodes() {
		return delegate().nodes();
	}

	/**
	 * Defer to {@link AbstractGraph#edges()} (based on {@link #successors(Object)})
	 * for full edges() implementation.
	 */
	@Override
	protected long edgeCount() {
		return delegate().edges().size();
	}

	@Override
	public boolean isDirected() {
		return delegate().isDirected();
	}

	@Override
	public boolean allowsSelfLoops() {
		return delegate().allowsSelfLoops();
	}

	@Override
	public ElementOrder nodeOrder() {
		return delegate().nodeOrder();
	}

	@Override
	public Set adjacentNodes(N node) {
		return delegate().adjacentNodes(node);
	}

	@Override
	public Set predecessors(N node) {
		return delegate().predecessors(node);
	}

	@Override
	public Set successors(N node) {
		return delegate().successors(node);
	}

	@Override
	public int degree(N node) {
		return delegate().degree(node);
	}

	@Override
	public int inDegree(N node) {
		return delegate().inDegree(node);
	}

	@Override
	public int outDegree(N node) {
		return delegate().outDegree(node);
	}

	@Override
	public boolean hasEdgeConnecting(N nodeU, N nodeV) {
		return delegate().hasEdgeConnecting(nodeU, nodeV);
	}

	@Override
	public boolean hasEdgeConnecting(EndpointPair endpoints) {
		return delegate().hasEdgeConnecting(endpoints);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy