ptolemy.actor.lib
Class BooleanSwitch
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.BooleanSwitch
- 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 BooleanSwitch
- extends TypedAtomicActor
Split an input stream onto two output ports depending on a
boolean control input. In an
iteration, if an input token is available at the control input,
that token is read, and its value is noted. Its value specifies the
output port that should be written to in this and subsequent iterations,
until another control input is provided. If no control
input is provided, then the inputs are routed to the falseOutput port.
In each iteration, at most one token on each channel of the input port
is read and sent to the corresponding channel of the
trueOutput port or the falseOutput port, depending on the
most recently received control input.
If the input 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 input port may receive Tokens of any type.
Note that the this actor may be used in Synchronous Dataflow (SDF)
models, but only under certain circumstances. Specifically, downstream
actors will be fired whether a token is sent to them or not.
This will only work if the downstream actors specifically check to
see whether input tokens are available.
- Since:
- Ptolemy II 2.0
- Version:
- $Id: BooleanSwitch.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Steve Neuendorffer
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
BooleanSwitch(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 falseOutput is written
to until a token arrives on the control input. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, 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.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 |
control
public TypedIOPort control
- Input that selects one of the other input ports. The type is
boolean.
input
public TypedIOPort input
- The input port. The type can be anything. This is a multiport,
and input tokens on all channels are routed to corresponding
channels on the output port, if there are such channels.
trueOutput
public TypedIOPort trueOutput
- Output for tokens on the true path. The type is at least the
type of the input.
falseOutput
public TypedIOPort falseOutput
- Output for tokens on the false path. The type is at least the
type of the input.
_control
private boolean _control
BooleanSwitch
public BooleanSwitch(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.
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 token from the
control input is true, then output the token consumed from the
input port on the trueOutput port,
otherwise output the token on the falseOutput 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 falseOutput is written
to until a token arrives on the control input.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the parent class throws it.