ptolemy.actor.lib
Class RecordAssembler

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.RecordAssembler
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
OrderedRecordAssembler

public class RecordAssembler
extends TypedAtomicActor

On each firing, read one token from each input port and assemble them into a RecordToken. The labels for the RecordToken are the names of the input ports. To use this class, instantiate it, and then add input ports (instances of TypedIOPort). This actor is polymorphic. The type constraint is that the type of each record field is no less than the type of the corresponding input port.

Since:
Ptolemy II 1.0
Version:
$Id: RecordAssembler.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Yuhong Xiong
See Also:
RecordDisassembler, Serialized Form
Accepted Rating:
Yellow (cxh)
Proposed Rating:
Yellow (yuhong)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  java.util.Set<Inequality> _typeConstraints
          Cached list of type constraints.
private  long _typeConstraintsVersion
          Version number when the cache was last updated.
 TypedIOPort output
          The output port.
 
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
RecordAssembler(CompositeEntity container, java.lang.String name)
          Construct a RecordAssembler with the given container and name.
 
Method Summary
 void fire()
          Read one token from each input port, assemble them into a RecordToken, and send the RecordToken to the output.
 boolean prefire()
          Return true if all input ports have tokens, false if some input ports do not have a token.
 void preinitialize()
          Override the base class to compute the type constraints.
 java.util.Set<Inequality> typeConstraints()
          Return the type constraints of this actor.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, 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, postfire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, 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

output

public TypedIOPort output
The output port. Its type is constrained to be a RecordType.


_typeConstraints

private java.util.Set<Inequality> _typeConstraints
Cached list of type constraints.


_typeConstraintsVersion

private long _typeConstraintsVersion
Version number when the cache was last updated.

Constructor Detail

RecordAssembler

public RecordAssembler(CompositeEntity container,
                       java.lang.String name)
                throws NameDuplicationException,
                       IllegalActionException
Construct a RecordAssembler 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.
Method Detail

fire

public void fire()
          throws IllegalActionException
Read one token from each input port, assemble them into a RecordToken, and send the RecordToken to the output.

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

prefire

public boolean prefire()
                throws IllegalActionException
Return true if all input ports have tokens, false if some input ports do not have a token.

Specified by:
prefire in interface Executable
Overrides:
prefire in class AtomicActor
Returns:
True if all input ports have tokens.
Throws:
IllegalActionException - If the hasToken() call to the input port throws it.
See Also:
IOPort.hasToken(int)

preinitialize

public void preinitialize()
                   throws IllegalActionException
Override the base class to compute the type constraints. It is an optimization to force this to happen before scheduling because this has the side effect of incrementing the workspace version number, which will force recalculation of the schedule on the next run.

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

typeConstraints

public java.util.Set<Inequality> typeConstraints()
Return the type constraints of this actor. The type constraint is that the type of the fields of the output RecordToken is no less than the type of the corresponding input ports.

Specified by:
typeConstraints in interface TypedActor
Overrides:
typeConstraints in class TypedAtomicActor
Returns:
a list of Inequality.
See Also:
Inequality