Package ptolemy.actor.lib
Class UnionMerge
- java.lang.Object
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
public class UnionMerge extends TypedAtomicActor
On each firing, read all tokens from every input port and wrap each token into a UnionToken of which the label matches the name of the originating input port. All produced UnionTypes are sent to the output port in a single firing.The type of the output port is a UnionType of which the labels much match the names of the input ports. This is achieved using two type constraints: The labels for the output UnionToken are the names of the input ports. This is achieved using two type constraints:
- output ≥ {| x = typeOf(inputPortX), y = typeOf(inputPortY), .. |} , which requires the types of the input ports to be compatible with the corresponding types in the output union.
- each input ≤ the type of the corresponding field inside the output union, which is similar to the usual default constraints, however this constraint establishes a dependency between the inputs of this actor and the fields inside the output union, instead of just between its inputs and outputs.
Note that the output UnionType is required to contain a corresponding field for every input. However, due to the subtyping relation of UnionType that is opposite to the subtyping of RecordType, the type constraint that the output port of this actor must be greater than or equal to the GLB of the types of its receivers (implied by the connections), is always satisfied.
To use this actor, instantiate it, and then add input ports (instances of TypedIOPort).
- Since:
- Ptolemy II 10.0
- Version:
- $Id$
- Author:
- Edward A. Lee, Haiyang Zheng, Yuhong Xiong, Marten Lohstroh
- Pt.AcceptedRating:
- Red (yuhongx)
- Pt.ProposedRating:
- Red (yuhongx)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description TypedIOPort
output
The output 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 UnionMerge(CompositeEntity container, java.lang.String name)
Construct an actor in the specified container with the specified name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Set<Inequality>
_customTypeConstraints()
Set up and return two 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 all available tokens from each input port, wrap each of them into a UnionToken of which the label matches the name of the originating input port.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
-
output
public TypedIOPort output
The output port. The type of this port will be the union of the type of the input ports.
-
-
Constructor Detail
-
UnionMerge
public UnionMerge(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
Construct an actor in the specified container with the specified name.- Parameters:
container
- The container.name
- The name.- Throws:
NameDuplicationException
- If an actor with an identical name already exists in the container.IllegalActionException
- If the actor cannot be contained by the proposed container.
-
-
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 all available tokens from each input port, wrap each of them into a UnionToken of which the label matches the name of the originating input port. All produced UnionTypes are sent to the output port in a single firing.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If there is no director, or the input can not be read, or the output can not be sent.
-
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 two type constraints.- output ≥ {x = typeOf(inputPortX), y = typeOf(inputPortY), ..} , which requires the types of the input ports to be compatible with the corresponding types in the output union.
- each input ≤ the type of the corresponding field inside the output union, which is similar to the usual default constraints, however this constraint establishes a dependency between the inputs of this actor and the fields inside the output union, instead of just between its inputs and outputs.
- Overrides:
_customTypeConstraints
in classTypedAtomicActor
- Returns:
- A set of type constraints
- 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
-
-