package com.github.liblevenshtein.collection.dictionary; import java.io.Serializable; import it.unimi.dsi.fastutil.chars.CharIterator; /** * Deterministically-transitions between states according to some input. * @author Dylon Edwards * @param <State> Kind of state this transition function accepts. * @since 2.1.0 */ public interface ITransitionFunction<State> extends Serializable { /** * Determines the next state given the current one and some input. * @param current The active state of an automaton * @param label Input used to determine the next state * @return The next state of the automaton */ State of(State current, char label); /** * Returns the labels of the outgoing edges from the node. * @param current The active state of an automaton * @return The labels of the outgoing edges from the node. */ CharIterator of(State current); }