ptolemy.backtrack.automatic.ptolemy.actor.lib
Class Counter
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.Counter
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Rollbackable, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class Counter
- extends TypedAtomicActor
- implements Rollbackable
This actor implements an up-down counter of received tokens. Whenever
a token is received from the increment input, the internal
counter is incremented. Whenever a token is received from the
decrement port, the internal counter is decremented. Whenever
a token is received from either input port, a token is created on the
output port with the integer value of the current count. At most one
token will be consumed from each input during each firing. If a token
is present on both input ports during any firing, then the increment
and the decrement will cancel out, and only one output token will be
produced.
- Since:
- Ptolemy II 2.0
- Version:
- $Id: Counter.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Steve Neuendorffer
- See Also:
- 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 |
Counter(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary |
private boolean |
$ASSIGN$_consumed(boolean newValue)
|
private int |
$ASSIGN$_count(int newValue)
|
private int |
$ASSIGN$_latestCount(int newValue)
|
private int |
$ASSIGN$SPECIAL$_latestCount(int operator,
long 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. |
void |
fire()
Consume at most one token from each input and update the
counter appropriately. |
void |
initialize()
Reset the count of inputs to zero. |
boolean |
postfire()
Record the most recent output count as the actual count. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, 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 |
_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 |
$CHECKPOINT
protected transient Checkpoint $CHECKPOINT
increment
public TypedIOPort increment
- The increment port. If this input port
receives a token, then the counter is incremented. The port
has type general.
decrement
public TypedIOPort decrement
- The decrement port. If this input port
receives a token, then the counter is decremented. The port
has type general.
output
public TypedIOPort output
- The output port with type IntToken.
_count
private int _count
_latestCount
private int _latestCount
_consumed
private boolean _consumed
$RECORD$$CHECKPOINT
protected transient CheckpointRecord $RECORD$$CHECKPOINT
$RECORD$_count
private transient FieldRecord $RECORD$_count
$RECORD$_latestCount
private transient FieldRecord $RECORD$_latestCount
$RECORD$_consumed
private transient FieldRecord $RECORD$_consumed
$RECORDS
private transient FieldRecord[] $RECORDS
Counter
public Counter(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
IllegalActionException
- If the actor cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
fire
public void fire()
throws IllegalActionException
- Consume at most one token from each input and update the
counter appropriately. Send the current value of the counter
to the output. If there are no input tokens available, no
output will be produced. If a token is consumed from only the
increment port the output value will be one more than
the previous output value. If a token consumed from only the
decrement port the output value will be one less than
the previous output value. If a token is consumed from both
input ports, then the output value will be the same as the
previous output value. If the fire method is invoked multiple
times in one iteration, then only the input read on the last
invocation in the iteration will affect future outputs of the
counter.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If there is no director.
initialize
public void initialize()
throws IllegalActionException
- Reset the count of inputs to zero.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the parent class throws it.
postfire
public boolean postfire()
throws IllegalActionException
- Record the most recent output count as the actual count.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- True if execution can continue into the next iteration.
- Throws:
IllegalActionException
- If the base class throws it.
$ASSIGN$_count
private final int $ASSIGN$_count(int newValue)
$ASSIGN$_latestCount
private final int $ASSIGN$_latestCount(int newValue)
$ASSIGN$SPECIAL$_latestCount
private final int $ASSIGN$SPECIAL$_latestCount(int operator,
long newValue)
$ASSIGN$_consumed
private final boolean $ASSIGN$_consumed(boolean newValue)
$COMMIT
public void $COMMIT(long timestamp)
- Description copied from interface:
Rollbackable
- Commit changes up to the given timestamp, but not including changes
made at timestamp and afterward.
- Specified by:
$COMMIT
in interface Rollbackable
- Parameters:
timestamp
- The timestamp.
$RESTORE
public void $RESTORE(long timestamp,
boolean trim)
- Description copied from interface:
Rollbackable
- Restore a previous state to all the private fields of this rollbackable
object.
- Specified by:
$RESTORE
in interface Rollbackable
- Parameters:
timestamp
- The timestamp taken at the time when the previous
state was recorded.trim
- Whether to delete the records used for the rollback.- See Also:
Checkpoint.rollback(long, boolean)
$GET$CHECKPOINT
public final Checkpoint $GET$CHECKPOINT()
- Description copied from interface:
Rollbackable
- Get the checkpoint object that monitors this rollbackable object.
- Specified by:
$GET$CHECKPOINT
in interface Rollbackable
- Returns:
- The checkpoint object.
$SET$CHECKPOINT
public final java.lang.Object $SET$CHECKPOINT(Checkpoint checkpoint)
- Description copied from interface:
Rollbackable
- Set the checkpoint object of this rollbackable object. A merge
operation is performed on the current checkpoint object and the new
checkpoint object, so that the two checkpoint objects monitor the same
set of objects when this function returns.
- Specified by:
$SET$CHECKPOINT
in interface Rollbackable
- Parameters:
checkpoint
- The new checkpoint object.
- Returns:
- This rollbackable object itself.
- See Also:
Checkpoint.setCheckpoint(Checkpoint)