Class DDFBooleanSelect

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

    public class DDFBooleanSelect
    extends TypedAtomicActor
    A type polymorphic select with boolean valued control for use in the DDF domain. In the first iteration, an input token at the control port is read and its value is noted. In the second iteration, if the control input read from the previous iteration is true, then an input token at the trueInput port is read and sent to the output. Likewise with a false control input and the falseInput port. It alternates between these two kinds of iterations until stopped. The control port must receive Boolean Tokens. The trueInput and falseInput ports may receive Tokens of any type. Because tokens are immutable, the same Token is sent to the output, rather than a copy.

    Note this actor sends an output token every two iterations. Contrast this with BooleanSelect which sends an output token every iteration.

    Since:
    Ptolemy II 4.1
    Version:
    $Id$
    Author:
    Gang Zhou
    Pt.AcceptedRating:
    Yellow (cxh)
    Pt.ProposedRating:
    Yellow (zgang)
    • Field Detail

      • trueInput

        public TypedIOPort trueInput
        Input for tokens on the true path. The port type can be any type.
      • falseInput

        public TypedIOPort falseInput
        Input for tokens on the false path. The port type can be any type.
      • control

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

        public TypedIOPort output
        The output port. The type is at least the type of trueInput and falseInput
      • trueInput_tokenConsumptionRate

        public Parameter trueInput_tokenConsumptionRate
        This parameter provides token consumption rate for trueInput. The type is int.
      • falseInput_tokenConsumptionRate

        public Parameter falseInput_tokenConsumptionRate
        This parameter provides token consumption rate for falseInput. The type is int.
      • control_tokenConsumptionRate

        public Parameter control_tokenConsumptionRate
        This parameter provides token consumption rate for control. The type is int.
    • Method Detail

      • fire

        public void fire()
                  throws IllegalActionException
        Fire the actor once. If the control port is not read in the previous iteration, read a new token from the control port and record the value of the token and this concludes the current firing. Otherwise output the token consumed from the trueInput port if the token read from the control port in the previous firing is true. Likewise with a false control input and the falseInput port. Then reset an internal variable so that it will read from the control port in the next iteration.
        Specified by:
        fire in interface Executable
        Overrides:
        fire in class AtomicActor<TypedIOPort>
        Throws:
        IllegalActionException - If there is no director, and hence no receivers have been created.
      • prefire

        public boolean prefire()
                        throws IllegalActionException
        Return false if the port to read from in the current iteration does not have a token. If the control port is not read in the previous iteration, the port to read from in the current iteration is the control port. Otherwise, it is the trueInput port or the falseInput port depending on the control input value read in the previous iteration.
        Specified by:
        prefire in interface Executable
        Overrides:
        prefire in class AtomicActor<TypedIOPort>
        Returns:
        False if there are not enough tokens to fire.
        Throws:
        IllegalActionException - If the receivers do not support the query, or if there is no director, and hence no receivers.