ptolemy.actor.lib
Class RecordUpdater
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.RecordUpdater
- 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 RecordUpdater
- extends TypedAtomicActor
On each firing, read one token from each input port and assemble them
into a RecordToken that contains the union of the original input record
and each of the update 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 output record contains all the labels in
the input record plus the names of added input ports. The type of a field
in the output is the same as the type of the added input port, if that field
is updated by an added input port. If a field in the output is not updated
by an input port, its type is the same as the corresponding field in the
input record. For example, if the input record has type
{item: string, value: int}, and this actor has two added input ports with
name/type: value/double and id/int, then the output record will have type
{item: string, value: double, id: int}
- Since:
- Ptolemy II 1.0
- Version:
- $Id: RecordUpdater.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Michael Shilman, Steve Neuendorffer
- See Also:
RecordAssembler
,
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 |
RecordUpdater(CompositeEntity container,
java.lang.String name)
Construct a RecordUpdater with the given container and name. |
Method Summary |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
Read one token from each input port, assemble them into a
RecordToken that contains the union of the original input record
and each of the update ports. |
boolean |
prefire()
Return true if all input ports have tokens, false if some input
ports do not have a token. |
java.util.Set<Inequality> |
typeConstraints()
Return the type constraints of this actor. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, 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 |
output
public TypedIOPort output
- The output port. Its type is constrained to be a RecordType.
input
public TypedIOPort input
- The input port. Its type is constrained to be a RecordType.
RecordUpdater
public RecordUpdater(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct a RecordUpdater 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.
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 class AtomicActor
- 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
- Read one token from each input port, assemble them into a
RecordToken that contains the union of the original input record
and each of the update ports.
- 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)
typeConstraints
public java.util.Set<Inequality> typeConstraints()
- Return the type constraints of this actor. The type constraint is
that the type of the output port is no less than the type of the
input port, and contains additional fields for each input port.
- Specified by:
typeConstraints
in interface TypedActor
- Overrides:
typeConstraints
in class TypedAtomicActor
- Returns:
- a list of Inequality.
- See Also:
Inequality