static int compareNumberTypeSpecificity()

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;
    }