/* Copyright 2008, 2009, 2010 by the Oxford University Computing Laboratory This file is part of HermiT. HermiT is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. HermiT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with HermiT. If not, see <http://www.gnu.org/licenses/>. */ package org.semanticweb.HermiT.datatypes.owlreal; import java.math.BigDecimal; import java.math.BigInteger; public enum NumberRange { NOTHING,INTEGER,DECIMAL,RATIONAL,REAL; public boolean isDense() { return ordinal()>=DECIMAL.ordinal(); } public static NumberRange intersection(NumberRange it1,NumberRange it2) { int minOrdinal=Math.min(it1.ordinal(),it2.ordinal()); return values()[minOrdinal]; } public static NumberRange union(NumberRange it1,NumberRange it2) { int maxOrdinal=Math.max(it1.ordinal(),it2.ordinal()); return values()[maxOrdinal]; } public static boolean isSubsetOf(NumberRange subset,NumberRange superset) { return subset.ordinal()<=superset.ordinal(); } public static NumberRange getMostSpecificRange(Number n) { if (n instanceof Integer || n instanceof Long || n instanceof BigInteger) return INTEGER; else if (n instanceof BigDecimal) return DECIMAL; else if (n instanceof BigRational) return RATIONAL; else throw new IllegalArgumentException(); } }