net.walend.digraph.path
Interface MutableCEPath

All Superinterfaces:
CEDigraph, CEPath, Digraph, HasState, Path
All Known Implementing Classes:
MutableListCEPath

public interface MutableCEPath
extends CEPath

MutableCEPath is an interface for represtenting mutable paths through CEDigraph.

Direct implementations of CEPath should have a copy constructor that takes a CEPath, and a constructor that requires a CEDigraph and a start node.

Since:
20010922
Author:
David Walend dfw1@cornell.edu

Field Summary
 
Fields inherited from interface net.walend.digraph.CEDigraph
EMPTY
 
Method Summary
 void addToHead(java.lang.Object edge, java.lang.Object node)
          Adds an edge and node to the beginning of the path.
 void addToTail(java.lang.Object edge, java.lang.Object node)
          Adds an edge and node to the end of the path.
 void graftToHead(CEPath path)
          Adds a path to the beginning of this path.
 void graftToTail(CEPath path)
          Adds a path to the end of this path.
 CEPath pruneHead(int index)
          Removes from the head to the edge at index.
 CEPath pruneHeadFromFirst(java.lang.Object node)
          Removes from the head to the first occurance of node.
 CEPath pruneHeadFromLast(java.lang.Object node)
          Removes from the head to the last occurance of node.
 CEPath pruneTail(int index)
          Removes from the edge at index to the tail.
 CEPath pruneTailFromFirst(java.lang.Object node)
          Removes from the first occurance of node to the tail.
 CEPath pruneTailFromLast(java.lang.Object node)
          Removes from the last occurance of node to the tail.
 java.lang.Object removeHead()
          Removes the head node from the path.
 java.lang.Object removeTail()
          Removes the tail node from the path.
 CEPath splice(CEPath path, int startNodeIndex, int endNodeIndex)
          Splices in path between the startNodeIndex and endNodeIndex.
 CEPath spliceFirst(CEPath path)
          Splices in path between the first occurence of path's head and the first occurence of path's tail.
 CEPath spliceFirstToLast(CEPath path)
          Splices in path between the first occurence of path's head and the last occurence of path's tail.
 CEPath spliceLast(CEPath path)
          Splices in path between the last occurence of path's head and the last occurence of path's tail.
 CEPath spliceLastToFirst(CEPath path)
          Splices in path between the last occurence of path's head and the first occurence of path's tail.
 
Methods inherited from interface net.walend.digraph.path.CEPath
getEdgeAtIndex, getEdgeList, getIndexOfEdge, getLastIndexOfEdge, getSubpath, getSubpathFirst, getSubpathFirstToLast, getSubpathLast, getSubpathLastToFirst, getSupergraph, pathEdgeIterator, sameCEPathAs
 
Methods inherited from interface net.walend.digraph.CEDigraph
containsCEDigraph, containsEdge, edgeIterator, getEdge, getEdges, getInboundEdges, getOutboundEdges, intersectWithCEDigraph, sameCEDigraphAs, unionCEDigraph
 
Methods inherited from interface net.walend.digraph.Digraph
containsEdge, containsNode, containsNodes, countInboundEdges, countOutboundEdges, edgeCount, edgeNodeIterator, getFromNodes, getNodes, getToNodes, isEdgeFree, isEmpty, nodeCount, nodeIterator
 
Methods inherited from interface net.walend.collection.HasState
getPrincipleInterface, sameStateAs
 
Methods inherited from interface net.walend.digraph.path.Path
getHead, getIndexOfNode, getLastIndexOfNode, getNodeAtIndex, getNodeList, getTail, pathEdgeCount, pathEdgeNodeIterator, pathNodeCount, pathNodeIterator, valid
 

Method Detail

addToTail

public void addToTail(java.lang.Object edge,
                      java.lang.Object node)
               throws EdgeMissingException,
                      NodeMissingException
Adds an edge and node to the end of the path.

Throws:
EdgeMissingException - if the edge is not in the digraph between the tail node and node.
NodeMissingException - if the node is not in the digraph.

addToHead

public void addToHead(java.lang.Object edge,
                      java.lang.Object node)
               throws EdgeMissingException,
                      NodeMissingException
Adds an edge and node to the beginning of the path.

Throws:
EdgeMissingException - if the edge is not in the digraph between the head node and node.
NodeMissingException - if the node is not in the digraph.

graftToHead

public void graftToHead(CEPath path)
                 throws EdgeMissingException,
                        NodeMissingException,
                        InvalidSpliceException
Adds a path to the beginning of this path.

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's tail node is not this' head node.

graftToTail

public void graftToTail(CEPath path)
                 throws EdgeMissingException,
                        NodeMissingException,
                        InvalidSpliceException
Adds a path to the end of this path.

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's head node is not this' tail node.

removeHead

public java.lang.Object removeHead()
                            throws LastNodeException
Removes the head node from the path.

returns the orphaned edge.

LastNodeException

removeTail

public java.lang.Object removeTail()
                            throws LastNodeException
Removes the tail node from the path.

returns the orphaned edge.

LastNodeException

pruneTail

public CEPath pruneTail(int index)
Removes from the edge at index to the tail.

Returns:
the path from the node at index to the tail.

pruneHead

public CEPath pruneHead(int index)
Removes from the head to the edge at index.

Returns:
the path from the head to the node at index.

pruneTailFromFirst

public CEPath pruneTailFromFirst(java.lang.Object node)
                          throws NodeMissingException
Removes from the first occurance of node to the tail.

Returns:
a path from the first occurance of node to the tail.
Throws:
NodeMissingException - if the node is not in the digraph.

pruneTailFromLast

public CEPath pruneTailFromLast(java.lang.Object node)
                         throws NodeMissingException
Removes from the last occurance of node to the tail.

Returns:
a path from the last occurance of node to the tail.
Throws:
NodeMissingException - if the node is not in the digraph.

pruneHeadFromFirst

public CEPath pruneHeadFromFirst(java.lang.Object node)
                          throws NodeMissingException
Removes from the head to the first occurance of node.

Returns:
a path from the head to the first occurance of node.
Throws:
NodeMissingException - if the node is not in the digraph.

pruneHeadFromLast

public CEPath pruneHeadFromLast(java.lang.Object node)
                         throws NodeMissingException
Removes from the head to the last occurance of node.

Returns:
a path from the head to the last occurance of node.
Throws:
NodeMissingException - if the node is not in the digraph.

splice

public CEPath splice(CEPath path,
                     int startNodeIndex,
                     int endNodeIndex)
              throws EdgeMissingException,
                     NodeMissingException,
                     InvalidSpliceException
Splices in path between the startNodeIndex and endNodeIndex.

Returns:
the orphaned path

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's head node is not the node in this at startNodeIndex, or if the path's tail node is not the node in this at endNodeIndex.

spliceFirst

public CEPath spliceFirst(CEPath path)
                   throws EdgeMissingException,
                          NodeMissingException,
                          InvalidSpliceException
Splices in path between the first occurence of path's head and the first occurence of path's tail.

Returns:
the orphaned path

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's head node is not the node in this at startNodeIndex, or if the path's tail node is not the node in this at endNodeIndex.

spliceLast

public CEPath spliceLast(CEPath path)
                  throws EdgeMissingException,
                         NodeMissingException,
                         InvalidSpliceException
Splices in path between the last occurence of path's head and the last occurence of path's tail.

Returns:
the orphaned path

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's head node is not the node in this at startNodeIndex, or if the path's tail node is not the node in this at endNodeIndex.

spliceFirstToLast

public CEPath spliceFirstToLast(CEPath path)
                         throws EdgeMissingException,
                                NodeMissingException,
                                InvalidSpliceException
Splices in path between the first occurence of path's head and the last occurence of path's tail.

Returns:
the orphaned path

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's head node is not the node in this at startNodeIndex, or if the path's tail node is not the node in this at endNodeIndex.

spliceLastToFirst

public CEPath spliceLastToFirst(CEPath path)
                         throws EdgeMissingException,
                                NodeMissingException,
                                InvalidSpliceException
Splices in path between the last occurence of path's head and the first occurence of path's tail.

Returns:
the orphaned path

Throws:
EdgeMissingException - if the any edge in path is missing from the digraph.
NodeMissingException - if any node in path not in the digraph.
InvalidSpliceException - if path's head node is not the node in this at startNodeIndex, or if the path's tail node is not the node in this at endNodeIndex.


Copyright (c) 2001, 2002, David Walend