ptolemy.domains.ddf.lib
Class DDFBooleanSelect

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.domains.ddf.lib.DDFBooleanSelect
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class DDFBooleanSelect
extends TypedAtomicActor

A type polymorphic select with boolean valued control for use in the DDF domain. In the first iteration, an input token at the control port is read and its value is noted. In the second iteration, if the control input read from the previous iteration is true, then an input token at the trueInput port is read and sent to the output. Likewise with a false control input and the falseInput port. It alternates between these two kinds of iterations until stopped. The control port must receive Boolean Tokens. The trueInput and falseInput ports may receive Tokens of any type. Because tokens are immutable, the same Token is sent to the output, rather than a copy.

Note this actor sends an output token every two iterations. Contrast this with BooleanSelect which sends an output token every iteration.

Since:
Ptolemy II 4.1
Version:
$Id: DDFBooleanSelect.java 38798 2005-07-08 20:00:01Z cxh $
Author:
Gang Zhou
See Also:
Serialized Form
Accepted Rating:
Yellow (cxh)
Proposed Rating:
Yellow (zgang)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  boolean _control
          The most recently read control token.
private  boolean _isControlRead
          The boolean to determine whether to read from the control port or the trueInput/falseInput port.
private static IntToken _one
          A final static IntToken with value 1.
private static IntToken _zero
          A final static IntToken with value 0.
 TypedIOPort control
          Input that selects one of the other input ports.
 Parameter control_tokenConsumptionRate
          This parameter provides token consumption rate for control.
 TypedIOPort falseInput
          Input for tokens on the false path.
 Parameter falseInput_tokenConsumptionRate
          This parameter provides token consumption rate for falseInput.
 TypedIOPort output
          The output port.
 TypedIOPort trueInput
          Input for tokens on the true path.
 Parameter trueInput_tokenConsumptionRate
          This parameter provides token consumption rate for trueInput.
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
DDFBooleanSelect(CompositeEntity container, java.lang.String name)
          Construct an actor in the specified container with the specified name.
 
Method Summary
 java.lang.Object clone(Workspace workspace)
          Clone the actor into the specified workspace.
 void fire()
          Fire the actor once.
 void initialize()
          Initialize this actor and the rate parameters so that it will read from the control port in the first iteration.
 boolean postfire()
          Update rate parameters for the next iteration.
 boolean prefire()
          Return false if the port to read from in the current iteration does not have a token.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

trueInput

public TypedIOPort trueInput
Input for tokens on the true path. The port type can be any type.


falseInput

public TypedIOPort falseInput
Input for tokens on the false path. The port type can be any type.


control

public TypedIOPort control
Input that selects one of the other input ports. The type is boolean.


output

public TypedIOPort output
The output port. The type is at least the type of trueInput and falseInput


trueInput_tokenConsumptionRate

public Parameter trueInput_tokenConsumptionRate
This parameter provides token consumption rate for trueInput. The type is int.


falseInput_tokenConsumptionRate

public Parameter falseInput_tokenConsumptionRate
This parameter provides token consumption rate for falseInput. The type is int.


control_tokenConsumptionRate

public Parameter control_tokenConsumptionRate
This parameter provides token consumption rate for control. The type is int.


_control

private boolean _control
The most recently read control token.


_isControlRead

private boolean _isControlRead
The boolean to determine whether to read from the control port or the trueInput/falseInput port.


_zero

private static final IntToken _zero
A final static IntToken with value 0.


_one

private static final IntToken _one
A final static IntToken with value 1.

Constructor Detail

DDFBooleanSelect

public DDFBooleanSelect(CompositeEntity container,
                        java.lang.String name)
                 throws IllegalActionException,
                        NameDuplicationException
Construct an actor in the specified container with the specified name.

Parameters:
container - The container.
name - The name of this actor within the container.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the name coincides with an actor already in the container.
Method Detail

clone

public java.lang.Object clone(Workspace workspace)
                       throws java.lang.CloneNotSupportedException
Clone the actor into the specified workspace. This calls the base class and then sets the type constraints.

Overrides:
clone in class AtomicActor
Parameters:
workspace - The workspace for the new object.
Returns:
A new actor.
Throws:
java.lang.CloneNotSupportedException - If a derived class has an attribute that cannot be cloned.
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

fire

public void fire()
          throws IllegalActionException
Fire the actor once. If the control port is not read in the previous iteration, read a new token from the control port and record the value of the token and this concludes the current firing. Otherwise output the token consumed from the trueInput port if the token read from the control port in the previous firing is true. Likewise with a false control input and the falseInput port. Then reset an internal variable so that it will read from the control port in the next iteration.

Specified by:
fire in interface Executable
Overrides:
fire in class AtomicActor
Throws:
IllegalActionException - If there is no director, and hence no receivers have been created.

initialize

public void initialize()
                throws IllegalActionException
Initialize this actor and the rate parameters so that it will read from the control port in the first iteration.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class AtomicActor
Throws:
IllegalActionException - If setToken() throws it.

postfire

public boolean postfire()
                 throws IllegalActionException
Update rate parameters for the next iteration. Then return whatever the superclass returns.

Specified by:
postfire in interface Executable
Overrides:
postfire in class AtomicActor
Returns:
True if execution can continue into the next iteration.
Throws:
IllegalActionException - If setToken() throws it.

prefire

public boolean prefire()
                throws IllegalActionException
Return false if the port to read from in the current iteration does not have a token. If the control port is not read in the previous iteration, the port to read from in the current iteration is the control port. Otherwise, it is the trueInput port or the falseInput port depending on the control input value read in the previous iteration.

Specified by:
prefire in interface Executable
Overrides:
prefire in class AtomicActor
Returns:
False if there are not enough tokens to fire.
Throws:
IllegalActionException - If the receivers do not support the query, or if there is no director, and hence no receivers.