ptolemy.actor.lib
Class ConfigurationSelect

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.actor.lib.ConfigurationSelect
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 ConfigurationSelect
extends TypedAtomicActor

Conditionally merge the streams at two input ports depending on the value of the boolean parameter. The token in the selector parameter specifies the input port that should be read from in the next firing. If the selector parameter token is false, then the falseInput port is used, otherwise the trueInput port is used. In the next firing, tokens are consumed from the specified port and sent to the output port.

The actor is able to fire if the selector parameter is either has a true or false token and there is a token on every channel of the specified input port.

If the input port that is read has width greater than an output port, then some input tokens will be discarded (those on input channels for which there is no corresponding output channel).

Because tokens are immutable, the same Token is sent to the output, rather than a copy. The trueInput and falseInput port may receive Tokens of any type.

This actor is designed to be used with the DDF or PN director, but it can also be used with SR, DE, and possibly other domains. It should not be used with SDF because the number of tokens it consumes is not fixed.

This actor is similar to the BooleanSelect actor, except that it uses a parameter rather than a control port to determine which input to use.

Since:
Ptolemy II 8.0
Version:
$Id: ConfigurationSelect.java 59167 2010-09-21 17:08:02Z cxh $
Author:
Charles Shelton
See Also:
Serialized Form
Accepted Rating:
Red (cshelton)
Proposed Rating:
Green (cshelton)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private static IntToken _one
          A final static IntToken with value 1.
private static IntToken _zero
          A final static IntToken with value 0.
 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.
 Parameter selector
          Parameter that selects one of the two input ports.
 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
ConfigurationSelect(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 this actor into the specified workspace.
 void fire()
          Read a token from each input port.
 void initialize()
          Initialize this actor so that the falseInput is read from until a token arrives on the selector input.
 boolean postfire()
          Return true, unless stop() has been called, in which case, return false.
 boolean prefire()
          If the mode is to read a selector token, then return true if the selector input has 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 type can be anything.


falseInput

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


selector

public Parameter selector
Parameter that selects one of the two input ports. The type is BooleanToken that defaults to false.


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.


_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

ConfigurationSelect

public ConfigurationSelect(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 this actor into the specified workspace. The new actor is not added to the directory of that workspace (you must do this yourself if you want it there). The result is a new actor with the same ports as the original, but no connections and no container. A container must be set before much can be done with this actor.

Overrides:
clone in class AtomicActor
Parameters:
workspace - The workspace for the cloned object.
Returns:
A new ComponentEntity.
Throws:
java.lang.CloneNotSupportedException - If cloned ports cannot have as their container the cloned entity (this should not occur), or if one of the attributes cannot be cloned.
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

fire

public void fire()
          throws IllegalActionException
Read a token from each input port. If the selector parameter is true, then output the token consumed from the trueInput port, otherwise output the token from the falseInput port.

Specified by:
fire in interface Executable
Overrides:
fire in class AtomicActor
Throws:
IllegalActionException - If there is no director.

initialize

public void initialize()
                throws IllegalActionException
Initialize this actor so that the falseInput is read from until a token arrives on the selector input.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class AtomicActor
Throws:
IllegalActionException - If the parent class throws it.

postfire

public boolean postfire()
                 throws IllegalActionException
Return true, unless stop() has been called, in which case, return false.

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

prefire

public boolean prefire()
                throws IllegalActionException
If the mode is to read a selector token, then return true if the selector input has a token. Otherwise, return true if every channel of the input port specified by the most recently read selector input has a token.

Specified by:
prefire in interface Executable
Overrides:
prefire in class AtomicActor
Returns:
False if there are not enough tokens to fire.
Throws:
IllegalActionException - If there is no director.