ptolemy.domains.sr.lib
Class NonStrictThreeBitAdder
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.domains.sr.lib.NonStrictThreeBitAdder
- 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 NonStrictThreeBitAdder
- extends TypedAtomicActor
A nonstrict three-bit adder. This adder has one input port, which is a
multiport, and two output ports, which are single ports. All of the ports
are of type int, and inputs are outputs are single bits. An exception is
thrown if a number other than 0 or 1 is received as an input, or if there
are not exactly three channels connected to the input port. This actor
adds the three input bits, and outputs the result to the lowBit and highBit
ports. Only two of the inputs must be known for highBit to be determined.
All inputs are necessary for lowBit to be determined. An absence of a token
is considered to have no contribution to the sum (same as value the zero).
If no input tokens are available at all, then no output is produced.
- Since:
- Ptolemy II 2.0
- Version:
- $Id: NonStrictThreeBitAdder.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Paul Whitaker
- 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 |
Method Summary |
void |
fire()
Add the bits from the input port and output the high bit and low
bit if they can be determined. |
boolean |
isStrict()
Return false. |
void |
preinitialize()
Override the base class to declare that the highBit
output port does not depend on the inputBits port in a firing. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, iterate, newReceiver, outputPortList, postfire, prefire, 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 |
inputBits
public TypedIOPort inputBits
- Inputs for bits to be added. The types are integer, and only
ones and zeros are expected.
highBit
public TypedIOPort highBit
- Output for the high bit. The type is integer, and only ones and
zeros will be sent.
lowBit
public TypedIOPort lowBit
- Output for the low bit. The type is integer, and only ones and
zeros will be sent.
NonStrictThreeBitAdder
public NonStrictThreeBitAdder(CompositeEntity container,
java.lang.String name)
throws IllegalActionException,
NameDuplicationException
- Construct an actor in the specified container with the specified
name.
- Parameters:
container
- The container.name
- The name of this adder within the container.
- Throws:
IllegalActionException
- If the actor cannot be contained
by the proposed container.
NameDuplicationException
- If the name coincides with
an actor already in the container.
fire
public void fire()
throws IllegalActionException
- Add the bits from the input port and output the high bit and low
bit if they can be determined.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If there is no director,
if there are not exactly three channels connected to the input,
or if invalid inputs are received.
isStrict
public boolean isStrict()
- Return false. This actor can produce some output at the highBit
output port even if not all the inputs have status known.
- Specified by:
isStrict
in interface Executable
- Overrides:
isStrict
in class AtomicActor
- Returns:
- False.
preinitialize
public void preinitialize()
throws IllegalActionException
- Override the base class to declare that the highBit
output port does not depend on the inputBits port in a firing.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class AtomicActor
- Throws:
IllegalActionException
- If the superclass throws it.