ptolemy.actor.lib
Class BusAssembler
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.BusAssembler
- 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 BusAssembler
- extends TypedAtomicActor
Aggregate all input relation channels into one output "bus" relation.
The width of the output port (bus relation) is set to the sum of the
input port widths. During the fire method, the input port channels are
scanned sequentially for tokens with the output channel index
incremented for each input channel scanned. If an input channel has a
token, it is copied to the corresponding output channel.
Note: The width of a single relation (e.g. connected to an input port)
may be controlled by adding a width parameter with an IntToken
value
representing the desired relation width
- Since:
- Ptolemy II 2.1
- Version:
- $Id: BusAssembler.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Zoltan Kemenczy, Research in Motion Limited
- See Also:
IORelation
,
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 |
BusAssembler(CompositeEntity container,
java.lang.String name)
Construct a BusAssembler with the given container and name. |
Method Summary |
private void |
_recalculateOutputWidth()
Recalculate the output relation width. |
void |
connectionsChanged(Port p)
React to a change in an input port width. |
void |
fire()
Iterate through input ports and transfer data sequentially from
input channels to output channels, maintaining input to output
channel mapping. |
void |
preinitialize()
Makes sure that there is only one relation connected to the
output port and recalculates its width. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, 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 |
output
public TypedIOPort output
- The input port.
_outputWidth
int _outputWidth
BusAssembler
public BusAssembler(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct a BusAssembler with the given container and name.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
IllegalActionException
- If this actor cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
connectionsChanged
public void connectionsChanged(Port p)
- React to a change in an input port width.
- Overrides:
connectionsChanged
in class AtomicActor
- Parameters:
p
- The port that has connection changes.
fire
public void fire()
throws IllegalActionException
- Iterate through input ports and transfer data sequentially from
input channels to output channels, maintaining input to output
channel mapping.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If calling send() or super.fire()
throws it.
preinitialize
public void preinitialize()
throws IllegalActionException
- Makes sure that there is only one relation connected to the
output port and recalculates its width.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class AtomicActor
- Throws:
IllegalActionException
- Not thrown in this base class.
_recalculateOutputWidth
private void _recalculateOutputWidth()
throws IllegalActionException
- Recalculate the output relation width.
- Throws:
IllegalActionException