CommonFloatingType.java
package edu.udel.cis.vsl.abc.ast.type.common;
import edu.udel.cis.vsl.abc.ast.type.IF.FloatingType;
public class CommonFloatingType extends CommonBasicType implements FloatingType {
private static BasicTypeKind floatToBasic(FloatKind floatKind,
boolean isComplex) {
if (isComplex) {
switch (floatKind) {
case FLOAT:
return BasicTypeKind.FLOAT_COMPLEX;
case DOUBLE:
return BasicTypeKind.DOUBLE_COMPLEX;
case LONG_DOUBLE:
return BasicTypeKind.LONG_DOUBLE_COMPLEX;
case REAL:
return BasicTypeKind.REAL;
}
} else {
switch (floatKind) {
case FLOAT:
return BasicTypeKind.FLOAT;
case DOUBLE:
return BasicTypeKind.DOUBLE;
case LONG_DOUBLE:
return BasicTypeKind.LONG_DOUBLE;
case REAL:
return BasicTypeKind.REAL;
}
}
throw new RuntimeException("Not reachable");
}
private FloatKind floatKind;
private boolean isComplex;
public CommonFloatingType(FloatKind floatKind, boolean isComplex) {
super(floatToBasic(floatKind, isComplex));
this.floatKind = floatKind;
this.isComplex = isComplex;
}
@Override
public boolean isComplex() {
return isComplex;
}
@Override
public FloatKind getFloatKind() {
return floatKind;
}
}