de.grogra.rgg.model
Class VVQueue

java.lang.Object
  extended by de.grogra.rgg.model.VVQueue
All Implemented Interfaces:
Queue

public class VVQueue
extends java.lang.Object
implements Queue

This XL queue can be used for parallel application of vertex-vertex operations on graph rotation systems. Given an instance g of VVQueue, one can write:

 g <== comma-separated list of GRS operations;
 
where the operations include
v [a b c]
Sets cyclic neighborhood of v to (a, b, c)
a b in v
Modifies cyclic neighborhood of v such that (a, b) is part of the cycle
~a in v
Removes a from cyclic neighbourhood of v
a >> b in v
Replaces a by b in cyclic neighborhood of v
p <+ a +> q
Splits edge from p to q and inserts a

Author:
Ole Kniemeyer

Nested Class Summary
static class VVQueue.Descriptor
           
 
Field Summary
static QueueDescriptor<VVQueue> DESCRIPTOR
           
 
Method Summary
 void addNeighbor(GRSVertex neighbor)
           
 void clear()
          Clears the queue.
 void clearSegmentsToExclude(int[] segs)
           
 QueueDescriptor<?> getDescriptor()
          Returns the descriptor which was used to create this queue.
 void insertAfter(GRSVertex v, GRSVertex old, GRSVertex in)
           
 void insertBefore(GRSVertex v, GRSVertex old, GRSVertex in)
           
 void makeFollower(GRSVertex a, GRSVertex b, GRSVertex in)
           
 void markSegment(int n)
           
 VVQueue operator$shl(GRSVertex neighbor)
           
 boolean process(int[] segs)
          Processes all queued tasks.
 void remove(GRSVertex old, GRSVertex in)
           
 void replace(GRSVertex subs, GRSVertex old, GRSVertex in)
           
 void resetToSegment(int n)
           
 VVQueue setNeighbors(GRSVertex vertex)
           
 void splitEdge(GRSVertex v, GRSVertex p, GRSVertex q)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DESCRIPTOR

public static final QueueDescriptor<VVQueue> DESCRIPTOR
Method Detail

addNeighbor

public void addNeighbor(GRSVertex neighbor)

clear

public void clear()
Description copied from interface: Queue
Clears the queue. This is invoked by the QueueCollection in order to reuse the queue for a new transformation step.

Specified by:
clear in interface Queue

clearSegmentsToExclude

public void clearSegmentsToExclude(int[] segs)
Specified by:
clearSegmentsToExclude in interface Queue

getDescriptor

public QueueDescriptor<?> getDescriptor()
Description copied from interface: Queue
Returns the descriptor which was used to create this queue.

Specified by:
getDescriptor in interface Queue
Returns:
descriptor of this queue
See Also:
QueueCollection.getQueue(QueueDescriptor), QueueDescriptor.createQueue(QueueCollection)

insertAfter

public void insertAfter(GRSVertex v,
                        GRSVertex old,
                        GRSVertex in)

insertBefore

public void insertBefore(GRSVertex v,
                         GRSVertex old,
                         GRSVertex in)

makeFollower

public void makeFollower(GRSVertex a,
                         GRSVertex b,
                         GRSVertex in)

markSegment

public void markSegment(int n)
Specified by:
markSegment in interface Queue

operator$shl

public VVQueue operator$shl(GRSVertex neighbor)

process

public boolean process(int[] segs)
                throws RuntimeModelException
Description copied from interface: Queue
Processes all queued tasks. This method is invoked by QueueCollection.process(int[]).

Specified by:
process in interface Queue
Returns:
true iff the execution of tasks resulted in modifications to the Graph
Throws:
RuntimeModelException - if some error occurs during execution

remove

public void remove(GRSVertex old,
                   GRSVertex in)

replace

public void replace(GRSVertex subs,
                    GRSVertex old,
                    GRSVertex in)

resetToSegment

public void resetToSegment(int n)
Specified by:
resetToSegment in interface Queue

setNeighbors

public VVQueue setNeighbors(GRSVertex vertex)

splitEdge

public void splitEdge(GRSVertex v,
                      GRSVertex p,
                      GRSVertex q)