Package ptolemy.domains.ddf.lib
Class DDFBooleanSelect
- 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.domains.ddf.lib.DDFBooleanSelect
-
- All Implemented Interfaces:
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$
- Author:
- Gang Zhou
- Pt.AcceptedRating:
- Yellow (cxh)
- Pt.ProposedRating:
- Yellow (zgang)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description 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.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 DDFBooleanSelect(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.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
_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 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.
-
-
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 classTypedAtomicActor
- 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 interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- 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 interfaceInitializable
- Overrides:
initialize
in classAtomicActor<TypedIOPort>
- 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 interfaceExecutable
- Overrides:
postfire
in classAtomicActor<TypedIOPort>
- 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 interfaceExecutable
- Overrides:
prefire
in classAtomicActor<TypedIOPort>
- 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.
-
-