Package ptolemy.actor.lib
Class RecordDisassembler
- 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.actor.lib.RecordDisassembler
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
public class RecordDisassembler extends TypedAtomicActor
On each firing, read one RecordToken from the input port and send out the fields of the RecordToken to multiple output ports. The labels for the RecordToken must match the names of the output ports. This is achieved using three type constraints:- input ≥ {x = typeOf(outputPortX), y = typeOf(outputPortY), ..} , which requires the types of the fields in the input record to be compatible with the types of the corresponding output ports.
- input ≤ {x = GENERAL, y = GENERAL, ..}, which requires the input record to contain a corresponding field for each output port.
- each output ≥ the type of the corresponding field inside the input record, which is similar to the usual default constraints, however this constraint establishes a dependency between fields inside the input record and the outputs of this actor, instead of just between its inputs and outputs.
If the received Token contains more fields than the output ports, the extra fields are ignored.
To use this class, instantiate it, and then add output ports (instances of TypedIOPort). This actor is polymorphic. The type constraint is that the type of each output port is no less than the type of the corresponding record field.
Note that if the display name of a port is set, display name is used in the type constraints instead of name. This is useful in case fields to extract from the record contain a period, because periods are not allowed in port names.
- Since:
- Ptolemy II 1.0
- Version:
- $Id$
- Author:
- Yuhong Xiong, Steve Neuendorffer, Edward A. Lee, Marten Lohstroh
- See Also:
RecordAssembler
- Pt.AcceptedRating:
- Yellow (cxh)
- Pt.ProposedRating:
- Yellow (yuhong)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description TypedIOPort
input
The input port.-
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 RecordDisassembler(CompositeEntity container, java.lang.String name)
Construct a RecordDisassembler with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Set<Inequality>
_customTypeConstraints()
Set up and return three type constraints.protected java.util.Set<Inequality>
_defaultTypeConstraints()
Do not establish the usual default type constraints.java.lang.Object
clone(Workspace workspace)
Clone the actor into the specified workspace.void
fire()
Read one RecordToken from the input port and send its fields to the output ports.void
notifyOfNameChange(NamedObj object)
React to a name change of contained ports.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _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, initialize, 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
_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, 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, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Field Detail
-
input
public TypedIOPort input
The input port.
-
-
Constructor Detail
-
RecordDisassembler
public RecordDisassembler(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
Construct a RecordDisassembler 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
-
clone
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
Clone the actor into the specified workspace.- Overrides:
clone
in classTypedAtomicActor
- Parameters:
workspace
- The workspace for the new object.- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class contains an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,NamedObj.setDeferringChangeRequests(boolean)
-
fire
public void fire() throws IllegalActionException
Read one RecordToken from the input port and send its fields to the output ports. If the input does not have a token, suspend firing and return.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If there is no director.
-
notifyOfNameChange
public void notifyOfNameChange(NamedObj object)
React to a name change of contained ports. Update the internal mapping from names and aliases to port objects, and invalidate the resolved types.- Overrides:
notifyOfNameChange
in classNamedObj
- Parameters:
object
- The object that changed.
-
_customTypeConstraints
protected java.util.Set<Inequality> _customTypeConstraints()
Set up and return three type constraints.- input ≥ {x = typeOf(outputPortX), y = typeOf(outputPortY), ..} , which requires the types of the fields in the input record to be compatible with the types of the corresponding output ports.
- input ≤ {x = GENERAL, y = GENERAL, ..}, which requires the input record to contain a corresponding field for each output port.
- each output ≥ the type of the corresponding field inside the input record, which is similar to the usual default constraints, however this constraint establishes a dependency between fields inside the input record and the outputs of this actor, instead of just between its inputs and outputs.
- Overrides:
_customTypeConstraints
in classTypedAtomicActor
- Returns:
- A set of Inequality instances
- See Also:
ConstructAssociativeType
,ExtractFieldType
-
_defaultTypeConstraints
protected java.util.Set<Inequality> _defaultTypeConstraints()
Do not establish the usual default type constraints.- Overrides:
_defaultTypeConstraints
in classTypedAtomicActor
- Returns:
- null
-
-