|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ptolemy.kernel.util.NamedObj ptolemy.kernel.InstantiableNamedObj ptolemy.kernel.Entity ptolemy.kernel.ComponentEntity ptolemy.actor.AtomicActor ptolemy.actor.TypedAtomicActor ptolemy.backtrack.automatic.ptolemy.actor.lib.OrderedMerge
public class OrderedMerge
This actor merges two monotonically nondecreasing streams of tokens into one monotonically nondecreasing stream. On each firing, it reads data from one of the inputs. On the first firing, it simply records that token. On the second firing, it reads data from the other input and outputs the smaller of the recorded token and the one it just read. If they are equal, then it outputs the recorded token. It then records the larger token. On each subsequent firing, it reads a token from the input port that did not provide the recorded token, and produces at the output the smaller of the recorded token and the one just read. Each time it produces an output token, it also produces true on the selectedA output if the output token came from inputA, and false if it came from inputB.
If both input sequences are nondecreasing, then the output sequence will be nondecreasing. Note that if the inputs are not nondecreasing, then the output is rather complex. The key is that in each firing, it produces the smaller of the recorded token and the token it is currently reading.
Red (eal) |
Red (eal) |
Nested Class Summary |
---|
Nested classes/interfaces inherited from class ptolemy.kernel.Entity |
---|
Entity.ContainedObjectsIterator |
Field Summary | |
---|---|
private ScalarToken |
_lastProduced
The last produced token. |
private TypedIOPort |
_nextPort
The port from which to read next. |
private static IntToken |
_one
A final static IntToken with value 1. |
private boolean |
_readFromA
Indicator of whether the _recordedToken was read from A. |
private ScalarToken |
_recordedToken
The recorded token. |
private ScalarToken |
_tentativeLastProduced
The tentative last produced token. |
private TypedIOPort |
_tentativeNextPort
The tentative port from which to read next. |
private boolean |
_tentativeReadFromA
Tentative indicator of having read from A. |
private ScalarToken |
_tentativeRecordedToken
The tentative recorded token. |
private static IntToken |
_zero
A final static IntToken with value 0. |
protected Checkpoint |
$CHECKPOINT
|
private FieldRecord |
$RECORD$_lastProduced
|
private FieldRecord |
$RECORD$_nextPort
|
private FieldRecord |
$RECORD$_readFromA
|
private FieldRecord |
$RECORD$_recordedToken
|
private FieldRecord |
$RECORD$_tentativeLastProduced
|
private FieldRecord |
$RECORD$_tentativeNextPort
|
private FieldRecord |
$RECORD$_tentativeReadFromA
|
private FieldRecord |
$RECORD$_tentativeRecordedToken
|
protected CheckpointRecord |
$RECORD$$CHECKPOINT
|
private FieldRecord[] |
$RECORDS
|
Parameter |
eliminateDuplicates
If true, eliminate duplicate tokens in the output stream. |
TypedIOPort |
inputA
The first input port, which accepts any scalar token. |
Parameter |
inputA_tokenConsumptionRate
The token consumption rate for inputA. |
TypedIOPort |
inputB
The second input port, which accepts any scalar token with the same type as the first input port. |
Parameter |
inputB_tokenConsumptionRate
The token consumption rate for inputB. |
TypedIOPort |
output
The output port, which has the same type as the input ports. |
TypedIOPort |
selectedA
Output port indicating whether the output token came from inputA. |
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 | |
---|---|
OrderedMerge(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary | |
---|---|
protected TypedIOPort |
_getNextPort()
Return the port that this actor will read from on the next invocation of the fire() method. |
private ScalarToken |
$ASSIGN$_lastProduced(ScalarToken newValue)
|
private TypedIOPort |
$ASSIGN$_nextPort(TypedIOPort newValue)
|
private boolean |
$ASSIGN$_readFromA(boolean newValue)
|
private ScalarToken |
$ASSIGN$_recordedToken(ScalarToken newValue)
|
private ScalarToken |
$ASSIGN$_tentativeLastProduced(ScalarToken newValue)
|
private TypedIOPort |
$ASSIGN$_tentativeNextPort(TypedIOPort newValue)
|
private boolean |
$ASSIGN$_tentativeReadFromA(boolean newValue)
|
private ScalarToken |
$ASSIGN$_tentativeRecordedToken(ScalarToken newValue)
|
void |
$COMMIT(long timestamp)
Commit changes up to the given timestamp, but not including changes made at timestamp and afterward. |
Checkpoint |
$GET$CHECKPOINT()
Get the checkpoint object that monitors this rollbackable object. |
void |
$RESTORE(long timestamp,
boolean trim)
Restore a previous state to all the private fields of this rollbackable object. |
java.lang.Object |
$SET$CHECKPOINT(Checkpoint checkpoint)
Set the checkpoint object of this rollbackable object. |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
Read one token from the port that did not provide the recorded token (or inputA, on the first firing), and output the smaller of the recorded token or the newly read token. |
void |
initialize()
Initialize this actor to indicate that no token is recorded. |
boolean |
postfire()
Commit the recorded token. |
Methods inherited from class ptolemy.actor.TypedAtomicActor |
---|
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints |
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 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, prefire, stop, stopFire, terminate |
Methods inherited from interface ptolemy.actor.Initializable |
---|
addInitializable, preinitialize, 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 |
---|
protected transient Checkpoint $CHECKPOINT
public Parameter eliminateDuplicates
public TypedIOPort inputA
public Parameter inputA_tokenConsumptionRate
public TypedIOPort inputB
public Parameter inputB_tokenConsumptionRate
public TypedIOPort output
public TypedIOPort selectedA
private ScalarToken _lastProduced
private TypedIOPort _nextPort
private static final IntToken _one
private boolean _readFromA
private ScalarToken _recordedToken
private ScalarToken _tentativeLastProduced
private boolean _tentativeReadFromA
private ScalarToken _tentativeRecordedToken
private TypedIOPort _tentativeNextPort
private static final IntToken _zero
protected transient CheckpointRecord $RECORD$$CHECKPOINT
private transient FieldRecord $RECORD$_lastProduced
private transient FieldRecord $RECORD$_nextPort
private transient FieldRecord $RECORD$_readFromA
private transient FieldRecord $RECORD$_recordedToken
private transient FieldRecord $RECORD$_tentativeLastProduced
private transient FieldRecord $RECORD$_tentativeReadFromA
private transient FieldRecord $RECORD$_tentativeRecordedToken
private transient FieldRecord $RECORD$_tentativeNextPort
private transient FieldRecord[] $RECORDS
Constructor Detail |
---|
public OrderedMerge(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
container
- The container.name
- The name of this actor.
IllegalActionException
- If the actor cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.Method Detail |
---|
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
clone
in class AtomicActor
workspace
- The workspace for the new object.
java.lang.CloneNotSupportedException
- If a derived class has
an attribute that cannot be cloned.NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
public void fire() throws IllegalActionException
fire
in interface Executable
fire
in class AtomicActor
IllegalActionException
- If there is no director.public void initialize() throws IllegalActionException
initialize
in interface Initializable
initialize
in class AtomicActor
IllegalActionException
- If a derived class throws it.public boolean postfire() throws IllegalActionException
postfire
in interface Executable
postfire
in class AtomicActor
IllegalActionException
- Not thrown in this base class.protected TypedIOPort _getNextPort()
private final ScalarToken $ASSIGN$_lastProduced(ScalarToken newValue)
private final TypedIOPort $ASSIGN$_nextPort(TypedIOPort newValue)
private final boolean $ASSIGN$_readFromA(boolean newValue)
private final ScalarToken $ASSIGN$_recordedToken(ScalarToken newValue)
private final ScalarToken $ASSIGN$_tentativeLastProduced(ScalarToken newValue)
private final boolean $ASSIGN$_tentativeReadFromA(boolean newValue)
private final ScalarToken $ASSIGN$_tentativeRecordedToken(ScalarToken newValue)
private final TypedIOPort $ASSIGN$_tentativeNextPort(TypedIOPort newValue)
public void $COMMIT(long timestamp)
Rollbackable
$COMMIT
in interface Rollbackable
timestamp
- The timestamp.public void $RESTORE(long timestamp, boolean trim)
Rollbackable
$RESTORE
in interface Rollbackable
timestamp
- The timestamp taken at the time when the previous
state was recorded.trim
- Whether to delete the records used for the rollback.Checkpoint.rollback(long, boolean)
public final Checkpoint $GET$CHECKPOINT()
Rollbackable
$GET$CHECKPOINT
in interface Rollbackable
public final java.lang.Object $SET$CHECKPOINT(Checkpoint checkpoint)
Rollbackable
$SET$CHECKPOINT
in interface Rollbackable
checkpoint
- The new checkpoint object.
Checkpoint.setCheckpoint(Checkpoint)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |