// State.swift // The base class for implementing states in a StateMachine // Ported from Android implementation import Foundation /// Base class for implementing states in a StateMachine open class State: IState { /// Initialize a new state public init() {} /// Called when a state is entered /// - Parameters: /// - from: State we are coming from /// - params: Optional parameters for state transition open func enter(from: IState?, params: Any?) { // Default implementation does nothing } /// Called when a state is exited /// - Parameter to: State we are transitioning to open func exit(to: IState?) { // Default implementation does nothing } /// Process a message sent to the state machine /// - Parameter msg: The message to process /// - Returns: HANDLED if processing has completed or NOT_HANDLED if the message wasn't processed open func processMessage(_ msg: Message) -> Bool { return false } /// Name of State for debugging purposes /// This default implementation returns the class name open var name: String { let className = String(describing: type(of: self)) if let lastDotIndex = className.lastIndex(of: ".") { return String(className[className.index(after: lastDotIndex)...]) } return className } }