Class BooleanSwitch

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class BooleanSwitch
    extends TypedAtomicActor
    Split an input stream onto two output ports depending on a boolean control input. In an iteration, if an input token is available at the control input, that token is read, and its value is noted. Its value specifies the output port that should be written to in this and subsequent iterations, until another control input is provided. If no control input is provided, then the inputs are routed to the falseOutput port. In each iteration, at most one token on each channel of the input port is read and sent to the corresponding channel of the trueOutput port or the falseOutput port, depending on the most recently received control input. If the input has width greater than an output port, then some input tokens will be discarded (those on input channels for which there is no corresponding output channel). Because tokens are immutable, the same Token is sent to the output, rather than a copy. The input port may receive Tokens of any type.

    Note that the this actor may be used in Synchronous Dataflow (SDF) models, but only under certain circumstances. Specifically, downstream actors will be fired whether a token is sent to them or not. This will only work if the downstream actors specifically check to see whether input tokens are available.

    Since:
    Ptolemy II 2.0
    Version:
    $Id$
    Author:
    Steve Neuendorffer
    Pt.AcceptedRating:
    Red (neuendor)
    Pt.ProposedRating:
    Green (neuendor)
    • Field Detail

      • control

        public TypedIOPort control
        Input that selects one of the other input ports. The type is boolean.
      • input

        public TypedIOPort input
        The input port. The type can be anything. This is a multiport, and input tokens on all channels are routed to corresponding channels on the output port, if there are such channels.
      • trueOutput

        public TypedIOPort trueOutput
        Output for tokens on the true path. The type is at least the type of the input.
      • falseOutput

        public TypedIOPort falseOutput
        Output for tokens on the false path. The type is at least the type of the input.
    • Method Detail

      • clone

        public java.lang.Object clone​(Workspace workspace)
                               throws java.lang.CloneNotSupportedException
        Clone this actor into the specified workspace. The new actor is not added to the directory of that workspace (you must do this yourself if you want it there). The result is a new actor with the same ports as the original, but no connections and no container. A container must be set before much can be done with this actor.
        Overrides:
        clone in class TypedAtomicActor
        Parameters:
        workspace - The workspace for the cloned object.
        Returns:
        A new ComponentEntity.
        Throws:
        java.lang.CloneNotSupportedException - If cloned ports cannot have as their container the cloned entity (this should not occur), or if one of the attributes cannot be cloned.
        See Also:
        NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)