IntervalSARL.java

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

//import edu.udel.cis.vsl.sarl.number.real.RealNumberFactory;
import edu.udel.cis.vsl.sarl.IF.number.IntegerNumber;
import edu.udel.cis.vsl.sarl.IF.number.Interval;

import edu.udel.cis.vsl.sarl.IF.number.NumberFactory;
import edu.udel.cis.vsl.sarl.IF.number.NumberFactory.IntervalUnion;
import edu.udel.cis.vsl.sarl.number.IF.Numbers;

/**
 * Another implementation of Interval using SARL to do the calculation;
 * 
 * @author dxu
 */

public class IntervalSARL{
	private static NumberFactory numFactory = Numbers.REAL_FACTORY;
	Interval value;
	
	public IntervalSARL(){
//		numFactory = new RealNumberFactory();
	}
	
	public Interval createEmptyInterval(){
		return numFactory.emptyIntegerInterval();
	}

	public Interval createUniversalInterval(){
		return numFactory.universalIntegerInterval();
	}
	
	public Interval createInterval(long num){
		IntegerNumber intNum = numFactory.integer(num);
		Interval a = numFactory.newInterval(true, intNum, false, intNum, false);
		return a;
	}
	
	public Interval intersect(Interval i1, Interval i2){
		return numFactory.intersection(i1, i2);
	}
	
	public Interval union(Interval i1, Interval i2){
		IntervalUnion result = new IntervalUnion();
		numFactory.union(i1, i2, result);
		return result.union;
	}
	
	public Interval plus(Interval i1, Interval i2){
		return numFactory.add(i1, i2);
	}
	
	public Interval minus(Interval i1, Interval i2){
		return numFactory.add(i1, i2);
	}
	
	public Interval multiply(Interval i1, Interval i2){
		return numFactory.multiply(i1, i2);
	}
	
	public Interval divide(Interval i1, Interval i2){
		return numFactory.divide(i1, i2);
	}
}