AbstractValue.java

package edu.udel.cis.vsl.abc.analysis.dataflow.IF;

/**
 * This class is the representation of abstract values. It is the basic general type
 * of value types used in different analysis. e.g. Interval, Integer.
 *  
 * This class defines a series of common methods that are used for the calculation
 * of the same abstract value type.
 * 
 * 
 *          
 * @author dxu
 */

public abstract class AbstractValue {
	
	public abstract AbstractValue top();
	
	public AbstractValue plus(AbstractValue leftValue, AbstractValue rightValue) {
		return leftValue.top();
	};

	public AbstractValue minus(AbstractValue leftValue, AbstractValue rightValue) {
		return leftValue.top();
	};

	public AbstractValue multiply(AbstractValue leftValue, AbstractValue rightValue) {
		return leftValue.top();
	};

	public AbstractValue divide(AbstractValue leftValue, AbstractValue rightValue) {
		return leftValue.top();
	};
	
	public AbstractValue union(AbstractValue leftValue, AbstractValue rightValue){
		return leftValue.top();
	}

	public abstract AbstractValue setValue(long value);
	
	public abstract boolean equals(Object obj);
	
	public abstract int hashCode();
	
}