Class BooleanSelect
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- ptolemy.actor.lib.BooleanSelect
-
- All Implemented Interfaces:
java.lang.Cloneable,Actor,Executable,FiringsRecordable,Initializable,TypedActor,Changeable,Debuggable,DebugListener,Derivable,Instantiable,ModelErrorHandler,MoMLExportable,Moveable,Nameable
public class BooleanSelect extends TypedAtomicActor
Conditionally merge the streams at two input ports depending on the value of the boolean control input. In the first firing, this actor consumes a token from the control input port. The token at the control input specifies the input port that should be read from in the next firing. If the control 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 either it needs a new control token and there is a token on the control port, or it has read a control 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. It should not be used with SDF because the number of tokens it consumes is not fixed. It probably also does not make sense to use it with SR or DE, because it takes two firings to transfer a token to the output. In those domains,
BooleanMultiplexormakes more sense. Unlike BooleanMultiplexor actor, this actor does not discard input tokens on the port that it does not read.- Since:
- Ptolemy II 2.0
- Version:
- $Id$
- Author:
- Steve Neuendorffer, Adam Cataldo, Edward A. Lee, Gang Zhou
- Pt.AcceptedRating:
- Red (neuendor)
- Pt.ProposedRating:
- Green (neuendor)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description TypedIOPortcontrolInput that selects one of the other input ports.Parametercontrol_tokenConsumptionRateThis parameter provides token consumption rate for control.TypedIOPortfalseInputInput for tokens on the false path.ParameterfalseInput_tokenConsumptionRateThis parameter provides token consumption rate for falseInput.TypedIOPortoutputThe output port.TypedIOPorttrueInputInput for tokens on the true path.ParametertrueInput_tokenConsumptionRateThis parameter provides token consumption rate for trueInput.-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _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
Constructors Constructor Description BooleanSelect(CompositeEntity container, java.lang.String name)Construct an actor in the specified container with the specified name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone(Workspace workspace)Clone this actor into the specified workspace.voidfire()Read a token from the control port or from the input designated by the previously read input from the control port.voidinitialize()Initialize this actor so that the falseInput is read from until a token arrives on the control input.booleanpostfire()Return true, unless stop() has been called, in which case, return false.booleanprefire()If the mode is to read a control token, then return true if the control input has a token.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, 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
_addPort, _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, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, 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.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
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
-
-
-
-
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.
-
control
public TypedIOPort control
Input that selects one of the other input ports. The type is BooleanToken.
-
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.
-
-
Constructor Detail
-
BooleanSelect
public BooleanSelect(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:
clonein classTypedAtomicActor- 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 IllegalActionExceptionRead a token from the control port or from the input designated by the previously read input from the control port. In the latter case, send to the token read to the output. In the former case, send nothing to the output.- Specified by:
firein interfaceExecutable- Overrides:
firein classAtomicActor<TypedIOPort>- Throws:
IllegalActionException- If there is no director.
-
initialize
public void initialize() throws IllegalActionExceptionInitialize this actor so that the falseInput is read from until a token arrives on the control input.- Specified by:
initializein interfaceInitializable- Overrides:
initializein classAtomicActor<TypedIOPort>- Throws:
IllegalActionException- If the parent class throws it.
-
postfire
public boolean postfire() throws IllegalActionExceptionReturn true, unless stop() has been called, in which case, return false.- Specified by:
postfirein interfaceExecutable- Overrides:
postfirein classAtomicActor<TypedIOPort>- Returns:
- True if execution can continue into the next iteration.
- Throws:
IllegalActionException- If the base class throws it.
-
prefire
public boolean prefire() throws IllegalActionExceptionIf the mode is to read a control token, then return true if the control input has a token. Otherwise, return true if every channel of the input port specified by the most recently read control input has a token.- Specified by:
prefirein interfaceExecutable- Overrides:
prefirein classAtomicActor<TypedIOPort>- Returns:
- False if there are not enough tokens to fire.
- Throws:
IllegalActionException- If there is no director.
-
-