<?php

/**
 * Finite state machine skeleton
 *
 * @copyright  (c) 2007-2012 Ouest Systèmes Informatiques
 * @author     Frédéric G. MARAND
 * @license    Licensed under the CeCILL 2.0
 * @link       http://wiki.audean.com/fsm/fsm
 *
 * @todo       replace setAttribute('id',...) by setIdAttribute when PHP5.2 becomes mandatory
 */

namespace OSInet\Finite_State_Machine;

/**
 * needed notably for func_name()
 */
require_once('misc.php'); // for func_name()

$erFiniteStateMachine = error_reporting(-1);

/**
 * This class defines a possible outcome for a given FSM transition.
 */
class Result {
  /**
   * The return value of the event handler.
   *
   * @var mixed
   */
  public $fsmReturn;

  /**
   * The name of the state to which the FSM must change.
   *
   * If NULL, do not change the current state.
   *
   * @var string
   */
  public $fsmState;

  /**
   * The name of an event to be fired after the state change has been applied.
   *
   * @var string
   */
  public $fsmAction;

  /**
   * @param string $state
   * @param string $action
   */
  public function __construct($return = NULL, $state = NULL, $action = NULL) {
    $this->fsmReturn = $return;
    $this->fsmState = $state;
    $this->fsmAction = $action;
  }
}

error_reporting($erFiniteStateMachine);
unset($erFiniteStateMachine);