CompositeEvent.java

package dev.civl.mc.model.IF.contract;

/**
 * This represents a composite event, which could be a
 * union/difference/intersect of another two depends events.
 * 
 * @author Manchun Zheng
 *
 */
public interface CompositeEvent extends DependsEvent {
	public enum CompositeEventOperator {
		UNION, DIFFERENCE, INTERSECT
	}

	/**
	 * Returns the left operand.
	 * 
	 * @return
	 */
	DependsEvent left();

	/**
	 * Returns the right operand
	 * 
	 * @return
	 */
	DependsEvent right();

	/**
	 * Returns the operator.
	 * 
	 * @return
	 */
	CompositeEventOperator operator();
}