package ilog.language.design.types;

/**
 * @version     Last modified on Sun Sep 15 15:42:30 2002 by hak
 * @author      <a href="mailto:hak@ilog.fr">Hassan A&iuml;t-Kaci</a>
 * @copyright   &copy; 2000-2002 <a href="http://www.ilog.fr/">ILOG, S.A.</a>
 */
/**
 * A <tt>TypingState</tt> consists of:
 * <ul>
 * <li> a goalStack point;
 * <li> a chptStack point;
 * <li> a bindTrail point;
 * <li> a typeTrail point;
 * <li> a applTrail point;
 * <li> a goalTrail point.
 * </ul>
 */

public class TypingState extends TimeStamp
{
  private int _goalStackPoint;
  private int _chptStackPoint;
  private int _bindTrailPoint;
  private int _typeTrailPoint;
  private int _applTrailPoint;
  private int _goalTrailPoint;

  final TypingState save (int goalStackPoint,
                          int chptStackPoint,
                          int bindTrailPoint,
                          int typeTrailPoint,
                          int applTrailPoint,
                          int goalTrailPoint)
    {
      _goalStackPoint = goalStackPoint;
      _chptStackPoint = chptStackPoint;
      _bindTrailPoint = bindTrailPoint;
      _typeTrailPoint = typeTrailPoint;
      _applTrailPoint = applTrailPoint;
      _goalTrailPoint = goalTrailPoint;
      return this;
    }
    
  final int goalStackPoint ()
    {
      return _goalStackPoint;
    }

  final int chptStackPoint ()
    {
      return _chptStackPoint;
    }

  final int bindTrailPoint ()
    {
      return _bindTrailPoint;
    }

  final int typeTrailPoint ()
    {
      return _typeTrailPoint;
    }

  final int applTrailPoint ()
    {
      return _applTrailPoint;
    }

  final int goalTrailPoint ()
    {
      return _goalTrailPoint;
    }

  public String toString ()
    {
      return "TypingState <" +
          "goalStackPoint = " + _goalStackPoint + ", " +
          "chptStackPoint = " + _chptStackPoint + ", " +
          "bindTrailPoint = " + _bindTrailPoint + ", " +
          "typeTrailPoint = " + _typeTrailPoint + ", " +
          "applTrailPoint = " + _applTrailPoint + ", " +
          "goalTrailPoint = " + _goalTrailPoint + ", " +
          "timeStamp = " + timeStamp() + ">";
    }
}
