/*
  Copyright (C) 2004 Tim Miller
  This file is part of the czt project.

  The czt project contains free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  The czt project is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with czt; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package net.sourceforge.czt.typecheck.z.util;

/**
 * An enumeration for representing the results of unification.
 */
public enum UResult
{
  /** The possible results of a unification. */
  /** Succeed. */
  SUCC,

  /** Failure. */
  FAIL,

  /** Partial (there are still variable types after unification). */
  PARTIAL;

  /**
   * A conjunction of two UResults.
   */
  public static UResult conj(UResult left, UResult right)
  {
    UResult result = SUCC;
    if (left == FAIL || right == FAIL) {
      result = FAIL;
    }
    else if (left == PARTIAL || right == PARTIAL) {
      result = PARTIAL;
    }
    return result;
  }
}
