package mf; /*Generated by MPS */ public class DoubleRange { private double myStart; private double myEnd; private boolean myStartIncluded; private boolean myEndIncluded; public DoubleRange(double start, double end) { this(start, true, end, true); } public DoubleRange(double start, boolean isStartIncluded, double end, boolean isEndIncluded) { this.myStart = start; this.myStartIncluded = isStartIncluded; this.myEnd = end; this.myEndIncluded = isEndIncluded; } public double getEnd() { return myEnd; } public double getStart() { return myStart; } public boolean includes(double arg) { if (arg < myStart || arg > myEnd) { return false; } if (arg > myStart && arg < myEnd) { return true; } if (arg == myStart) { return myStartIncluded; } if (arg == myEnd) { return myEndIncluded; } assert false : "unreachable"; return false; } public boolean isEmpty() { return myStart > myEnd; } public boolean overlaps(DoubleRange arg) { if (myStart == arg.myEnd) { return myStartIncluded && arg.myEndIncluded; } if (myEnd == arg.myStart) { return myEndIncluded && arg.myStartIncluded; } return (arg.includes(myStart) || arg.includes(myEnd) || this.includes(arg)); } public boolean includes(DoubleRange arg) { return this.includes(arg.myStart) && this.includes(arg.myEnd); } public static DoubleRange upTo(double end) { return new DoubleRange(Double.NEGATIVE_INFINITY, end); } public static DoubleRange andMore(double start) { return new DoubleRange(start, Double.POSITIVE_INFINITY); } }