/*
 *
 * Copyright (c) 2007
 * Adrian Michel
 * http://www.tradery.com
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Adrian Michel makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided "as is" without express or implied warranty.
*/

package com.tradery.contentmodel;

/**
 * Abstract base class for all the state machines
 *  This interface needs not be visible outside the package
 */
interface AbstractStateMachine
{
  /**
   * Generates a new state object, set to the initial state
   * 
   * @return The state object
   */
  abstract AbstractState getInitialState();
  public abstract void dump();
  /**
   * Sets the final states in the state machine
   * 
   * @todo this should be changes so it uses some typed value instead of
   * Object - a new interface should be defined and used for final states
   * @param o
   */
  abstract void setFinalStates( Object o );
}