Class MealySimulatorSUL<I,​O>

    • Constructor Detail

      • MealySimulatorSUL

        public MealySimulatorSUL​(MealyMachine<?,​I,​?,​O> mealy)
        Constructor, using null as the output for undefined transitions.

        This constructor is provided for convenience. It is equivalent to calling MealySimulatorSUL(MealyMachine, Object) with null as the second argument.

        Parameters:
        mealy - Mealy machine
      • MealySimulatorSUL

        public MealySimulatorSUL​(MealyMachine<?,​I,​?,​O> mealy,
                                 O noTransOut)
        Constructor.

        If the given Mealy machine has no undefined transitions, the second parameter has no effect. Otherwise, if the Mealy machine is partial and sequences of step(Object) invocations reach an undefined transition, subsequent invocations of step(Object) will simply return the specified noTransOut symbol.

        Parameters:
        mealy - the Mealy machine
        noTransOut - the output symbol to use when encountering undefined transitions
    • Method Detail

      • pre

        public void pre()
        Description copied from interface: SUL
        setup SUL.
        Specified by:
        pre in interface SUL<I,​O>
      • post

        public void post()
        Description copied from interface: SUL
        shut down SUL.
        Specified by:
        post in interface SUL<I,​O>
      • step

        public O step​(I in)
        Description copied from interface: SUL
        make one step on the SUL.
        Specified by:
        step in interface SUL<I,​O>
        Parameters:
        in - input to the SUL
        Returns:
        output of SUL
      • canFork

        public boolean canFork()
        Description copied from interface: SUL
        Returns whether this SUL is capable of forking.
        Specified by:
        canFork in interface SUL<I,​O>
        Returns:
        true if this SUL can be forked, false otherwise
        See Also:
        SUL.fork()
      • fork

        public SUL<I,​O> fork()
        Description copied from interface: SUL
        Forks this SUL, if possible. The fork of a SUL is a copy which behaves exactly the same as this SUL. This method should always return a reseted SUL, regardless of whether this call is made between a call to SUL.pre() and SUL.post().

        If SUL.canFork() returns true, this method must return a non-null object, which should behave exactly like this SUL (in particular, it must be forkable as well). Otherwise, a UnsupportedOperationException must be thrown.

        Implementation note: if resetting a SUL changes the internal state of this object in a non-trivial way (e.g., incrementing a counter to ensure independent sessions), care must be taken that forks of this SUL manipulate the same internal state.

        Specified by:
        fork in interface SUL<I,​O>
        Returns:
        a fork of this SUL.