/*---------------------------------------------------------------------------
File:         			BinaryPredicate.java
Package:                        JFLAP Version 2.0
Author:				Magda & Octavian Procopiuc V1.0 07/15/96
                                Eric Gramond V2.0 07/22/97 
 
Description of Contents:	Contains class BinaryPredicate.
				
--------------------------------------------------------------------------*/

/* 
 * Susan H. Rodger, Magda Procopiuc, Octavian Procopiuc, Eric Gramond
 * Computer Science Department
 * Duke University
 * June 1998
 * Supported by National Science Foundation DUE-9596002 and DUE-9555084.
 *
 * Copyright (c) 1998
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the author.  The name of the author may not be used to
 * endorse or promote products derived from this software without
 * specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

package flap;

import java.io.Serializable;

/**
 * BinaryPredicate is the interface that must be implemented by all binary predicate objects.
 * Every BinaryPredicate object must define a single method called execute() that takes
 * two objects as its arguments and returns a boolean. BinaryPredicate objects are often
 * built to operate on a specific kind of argument and must therefore cast the input
 * parameters in order to process them.
 */

public interface BinaryPredicate extends Serializable
  {
  /**
   * Return the result of executing with two Object arguments.
   * @param first The first object operand.
   * @param second The second object operand.
   * @return The boolean result of processing the input parameters.
   */
  boolean execute( Object first, Object second );
  }
