in freemarker-core/src/main/java/freemarker/ext/beans/OverloadedNumberUtil.java [1198:1287]
static int compareNumberTypeSpecificity(Class c1, Class c2) {
// DO NOT EDIT, generated code!
// See: src\main\misc\overloadedNumberRules\README.txt
c1 = ClassUtil.primitiveClassToBoxingClass(c1);
c2 = ClassUtil.primitiveClassToBoxingClass(c2);
if (c1 == c2) return 0;
if (c1 == Integer.class) {
if (c2 == Long.class) return 4 - 3;
if (c2 == Double.class) return 7 - 3;
if (c2 == Float.class) return 6 - 3;
if (c2 == Byte.class) return 1 - 3;
if (c2 == Short.class) return 2 - 3;
if (c2 == BigDecimal.class) return 8 - 3;
if (c2 == BigInteger.class) return 5 - 3;
return 0;
}
if (c1 == Long.class) {
if (c2 == Integer.class) return 3 - 4;
if (c2 == Double.class) return 7 - 4;
if (c2 == Float.class) return 6 - 4;
if (c2 == Byte.class) return 1 - 4;
if (c2 == Short.class) return 2 - 4;
if (c2 == BigDecimal.class) return 8 - 4;
if (c2 == BigInteger.class) return 5 - 4;
return 0;
}
if (c1 == Double.class) {
if (c2 == Integer.class) return 3 - 7;
if (c2 == Long.class) return 4 - 7;
if (c2 == Float.class) return 6 - 7;
if (c2 == Byte.class) return 1 - 7;
if (c2 == Short.class) return 2 - 7;
if (c2 == BigDecimal.class) return 8 - 7;
if (c2 == BigInteger.class) return 5 - 7;
return 0;
}
if (c1 == Float.class) {
if (c2 == Integer.class) return 3 - 6;
if (c2 == Long.class) return 4 - 6;
if (c2 == Double.class) return 7 - 6;
if (c2 == Byte.class) return 1 - 6;
if (c2 == Short.class) return 2 - 6;
if (c2 == BigDecimal.class) return 8 - 6;
if (c2 == BigInteger.class) return 5 - 6;
return 0;
}
if (c1 == Byte.class) {
if (c2 == Integer.class) return 3 - 1;
if (c2 == Long.class) return 4 - 1;
if (c2 == Double.class) return 7 - 1;
if (c2 == Float.class) return 6 - 1;
if (c2 == Short.class) return 2 - 1;
if (c2 == BigDecimal.class) return 8 - 1;
if (c2 == BigInteger.class) return 5 - 1;
return 0;
}
if (c1 == Short.class) {
if (c2 == Integer.class) return 3 - 2;
if (c2 == Long.class) return 4 - 2;
if (c2 == Double.class) return 7 - 2;
if (c2 == Float.class) return 6 - 2;
if (c2 == Byte.class) return 1 - 2;
if (c2 == BigDecimal.class) return 8 - 2;
if (c2 == BigInteger.class) return 5 - 2;
return 0;
}
if (c1 == BigDecimal.class) {
if (c2 == Integer.class) return 3 - 8;
if (c2 == Long.class) return 4 - 8;
if (c2 == Double.class) return 7 - 8;
if (c2 == Float.class) return 6 - 8;
if (c2 == Byte.class) return 1 - 8;
if (c2 == Short.class) return 2 - 8;
if (c2 == BigInteger.class) return 5 - 8;
return 0;
}
if (c1 == BigInteger.class) {
if (c2 == Integer.class) return 3 - 5;
if (c2 == Long.class) return 4 - 5;
if (c2 == Double.class) return 7 - 5;
if (c2 == Float.class) return 6 - 5;
if (c2 == Byte.class) return 1 - 5;
if (c2 == Short.class) return 2 - 5;
if (c2 == BigDecimal.class) return 8 - 5;
return 0;
}
return 0;
}