ptolemy.caltrop.ddi
Class Dataflow

java.lang.Object
  extended by ptolemy.caltrop.ddi.AbstractDDI
      extended by ptolemy.caltrop.ddi.Dataflow
All Implemented Interfaces:
Executable, Initializable, DDI
Direct Known Subclasses:
DataflowWithRates

public class Dataflow
extends AbstractDDI

Since:
Ptolemy II 4.0
Version:
$Id: Dataflow.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Jörn W. Janneck, Steve Neuendorffer
Accepted Rating:
Red (cxh)
Proposed Rating:
Red (cxh)

Field Summary
protected  caltrop.interpreter.ast.Action[] _actions
           
protected  caltrop.interpreter.ast.Actor _actor
           
protected  ptolemy.caltrop.ddi.util.DataflowActorInterpreter _actorInterpreter
           
protected  caltrop.interpreter.Context _context
           
protected  java.util.Set _currentStateSet
           
protected  caltrop.interpreter.ast.Transition[] _currentTransitions
           
protected  caltrop.interpreter.environment.Environment _env
           
protected  java.util.Map _inputPorts
           
protected  caltrop.interpreter.ast.Action _lastFiredAction
           
protected  java.util.Map _outputPorts
           
protected  TypedAtomicActor _ptActor
           
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
Dataflow(TypedAtomicActor ptActor, caltrop.interpreter.ast.Actor actor, caltrop.interpreter.Context context, caltrop.interpreter.environment.Environment env)
           
 
Method Summary
private  void _commitInputChannels()
           
private  void _computeNextTransitions()
           
private  void _rollbackInputChannels()
           
protected  int _selectAction()
          This method picks an action for which the actor interpreter evaluates the guard to true.
protected  int _selectInitializer()
           
private  void computeNextStateSet(caltrop.interpreter.ast.Action a)
           
private  java.util.Map createPortMap(caltrop.interpreter.ast.PortDecl[] ports, boolean isInput)
           
 void fire()
          Executes the selected action on the first fire() call.
 java.lang.String getName()
          Get the name of the domain that this DDI implements.
 void initialize()
          In SDF, selecting which initializer to fire is already done in preinitialize().
private  boolean isEligibleAction(caltrop.interpreter.ast.Action a)
           
 boolean isLegalActor()
          Perform static checking on the actor, ensuring its validity in a given domain.
private static boolean isPrefixedByTagList(caltrop.interpreter.ast.QID tag, caltrop.interpreter.ast.QID[] tags)
           
 boolean postfire()
          Postfire this actor.
 boolean prefire()
          Select a firable action among the actions of the actor, if possible.
 void preinitialize()
          Preinitialize this actor.
 void setupActor()
          Perform any domain dependent setup.
 
Methods inherited from class ptolemy.caltrop.ddi.AbstractDDI
addInitializable, isFireFunctional, isStrict, iterate, removeInitializable, stop, stopFire, terminate, wrapup
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_ptActor

protected TypedAtomicActor _ptActor

_actor

protected caltrop.interpreter.ast.Actor _actor

_actions

protected caltrop.interpreter.ast.Action[] _actions

_context

protected caltrop.interpreter.Context _context

_env

protected caltrop.interpreter.environment.Environment _env

_currentStateSet

protected java.util.Set _currentStateSet

_currentTransitions

protected caltrop.interpreter.ast.Transition[] _currentTransitions

_actorInterpreter

protected ptolemy.caltrop.ddi.util.DataflowActorInterpreter _actorInterpreter

_inputPorts

protected java.util.Map _inputPorts

_outputPorts

protected java.util.Map _outputPorts

_lastFiredAction

protected caltrop.interpreter.ast.Action _lastFiredAction
Constructor Detail

Dataflow

public Dataflow(TypedAtomicActor ptActor,
                caltrop.interpreter.ast.Actor actor,
                caltrop.interpreter.Context context,
                caltrop.interpreter.environment.Environment env)
Method Detail

createPortMap

private java.util.Map createPortMap(caltrop.interpreter.ast.PortDecl[] ports,
                                    boolean isInput)

isLegalActor

public boolean isLegalActor()
Description copied from interface: DDI
Perform static checking on the actor, ensuring its validity in a given domain.

Returns:
True, if the actor is legal.

setupActor

public void setupActor()
Description copied from interface: DDI
Perform any domain dependent setup. This can include hanging various attributes off of the actor, for example, the rate of the input and output ports.


getName

public java.lang.String getName()
Description copied from interface: DDI
Get the name of the domain that this DDI implements.

Returns:
The name of the domain that this DDI implements.

fire

public void fire()
          throws IllegalActionException
Executes the selected action on the first fire() call. On successive calls, it rolls back previous state changes, selects a new action and executes it.

Note: Is this correct behavior? What is the contract between the result of prefire() and successive calls to fire()?

Throws:
IllegalActionException - If an error occurs during the interpretation of the action.

preinitialize

public void preinitialize()
                   throws IllegalActionException
Preinitialize this actor.

Throws:
IllegalActionException - If initializing is not permitted.

_selectAction

protected int _selectAction()
This method picks an action for which the actor interpreter evaluates the guard to true. Note that this does not necessarily mean that all preconditions for firing are satisfied---the amount of "prechecking" depends on the model of computation ddi. (FIXMELATER)

Returns:
The action number that was selected, a value <0 if no action was selected.

_selectInitializer

protected int _selectInitializer()

initialize

public void initialize()
                throws IllegalActionException
In SDF, selecting which initializer to fire is already done in preinitialize().

Throws:
IllegalActionException

_commitInputChannels

private void _commitInputChannels()

_rollbackInputChannels

private void _rollbackInputChannels()

postfire

public boolean postfire()
                 throws IllegalActionException
Postfire this actor.

Returns:
True if the execution can continue.
Throws:
IllegalActionException - If postfiring is not permitted.

prefire

public boolean prefire()
                throws IllegalActionException
Select a firable action among the actions of the actor, if possible.

Returns:
True, if an action could be selected.
Throws:
IllegalActionException - If an error occurred during the action selection.

isEligibleAction

private boolean isEligibleAction(caltrop.interpreter.ast.Action a)

computeNextStateSet

private void computeNextStateSet(caltrop.interpreter.ast.Action a)

_computeNextTransitions

private void _computeNextTransitions()

isPrefixedByTagList

private static boolean isPrefixedByTagList(caltrop.interpreter.ast.QID tag,
                                           caltrop.interpreter.ast.QID[] tags)