uk.ac.man.cs.rainbow.rapa
Class ProcessTerm

java.lang.Object
  |
  +--uk.ac.man.cs.rainbow.rapa.ProcessTerm
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
Alpha, Assign, Call, Choice, Guard, Hide, Loop, Out, Parallel, RegDef, Sequence, Skip, Synch, VarDef, Zero

public abstract class ProcessTerm
extends Object
implements Serializable

RAPA process term superclass.

See Also:
Serialized Form

Constructor Summary
ProcessTerm()
           
 
Method Summary
abstract  boolean equals(Object o)
           
 Rules getGCL()
          Get the GCL rules for this process term.
 Rules getGCL(boolean selfContained)
          Get the GCL rules for this process term.
protected abstract  GINRet getGCL(ProgramCounterFactory factory, int i, int n, int t, Value[] c)
          Get a (g,i,n) triple representing the GCL rules for this process term.
protected  ProcessTerm getSequenceHead()
          Get the process term at the head of the sequence.
abstract  ProcessTerm subst(GeneralSubstitution s)
          Apply a substitution to all arguments in the process term.
abstract  ProcessTerm subst(Substitution s)
          Apply a substitution to all expressions in the process term.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ProcessTerm

public ProcessTerm()
Method Detail

equals

public abstract boolean equals(Object o)
Overrides:
equals in class Object

toString

public String toString()
Overrides:
toString in class Object

subst

public abstract ProcessTerm subst(Substitution s)
Apply a substitution to all expressions in the process term.

subst

public abstract ProcessTerm subst(GeneralSubstitution s)
Apply a substitution to all arguments in the process term.
See Also:
Argument

getSequenceHead

protected ProcessTerm getSequenceHead()
Get the process term at the head of the sequence. Note that it is necessary to recurse inside only some process terms to get this information. It all depends on exactly what sort of GCL rules are produced by the term itself...

getGCL

protected abstract GINRet getGCL(ProgramCounterFactory factory,
                                 int i,
                                 int n,
                                 int t,
                                 Value[] c)
Get a (g,i,n) triple representing the GCL rules for this process term.
Parameters:
factory - Generator for new program counters.
i - Current thread number.
n - Current PC value.
t - Terminating PC value (-1 for sequence and loop stitching, 0 for thread-end.)
c - Superthread context vector.

getGCL

public Rules getGCL(boolean selfContained)
Get the GCL rules for this process term.
Parameters:
selfContained - Indicates whether to strip rules whose actions contain variables; should be true when processing closed RAPA programs, and false when processing RAPA fragments.
See Also:
Rules.expand(boolean)

getGCL

public Rules getGCL()
Get the GCL rules for this process term. Assumes that this process term represents a complete program with no external channels.