/** * Creates an instance of {@link ObjectGenerator} which divides values of given object generators. * * @param type Type object generator will return. * @param dividend Object generator which will be used as dividend. * @param divisor Object generator which will be used as divisor. * @param <T> Type object generator will return. * @return An instance of {@link ObjectGenerator} which divides values of given object generators. */ @SuppressWarnings("unchecked") public static <T> ObjectGenerator<T> divide(Class<T> type, ObjectGenerator<T> dividend, ObjectGenerator<T> divisor) { if (type.equals(Byte.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueByte(dividend.value, divisor.value)); } else if (type.equals(Short.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueShort(dividend.value, divisor.value)); } else if (type.equals(Integer.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueInteger(dividend.value, divisor.value)); } else if (type.equals(Long.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueLong(dividend.value, divisor.value)); } else if (type.equals(Float.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueFloat(dividend.value, divisor.value)); } else if (type.equals(Double.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueDouble(dividend.value, divisor.value)); } else { throw new RuntimeException("Type: " + type.getName() + " not supported."); } }
/** * Creates an instance of {@link ObjectGenerator} which divides values of given object generators. * * @param type Type object generator will return. * @param dividend Object generator which will be used as dividend. * @param divisor Object generator which will be used as divisor. * @param <T> Type object generator will return. * @return An instance of {@link ObjectGenerator} which divides values of given object generators. */ @SuppressWarnings("unchecked") public static <T> ObjectGenerator<T> divide(Class<T> type, ObjectGenerator<T> dividend, ObjectGenerator<T> divisor) { if (type.equals(Byte.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueByte(dividend.value, divisor.value)); } else if (type.equals(Short.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueShort(dividend.value, divisor.value)); } else if (type.equals(Integer.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueInteger(dividend.value, divisor.value)); } else if (type.equals(Long.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueLong(dividend.value, divisor.value)); } else if (type.equals(Float.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueFloat(dividend.value, divisor.value)); } else if (type.equals(Double.class)) { return (ObjectGenerator<T>) wrap(new DivisionValueDouble(dividend.value, divisor.value)); } else { throw new RuntimeException("Type: " + type.getName() + " not supported."); } }
/** * Creates division value. * * @return An division value. */ @SuppressWarnings("rawtypes") protected Object createDivisionValue() { String type = (String) pop(2); Value dividend = (Value) pop(1); Value divisor = (Value) pop(); switch (type) { case "byte": return new DivisionValueByte(dividend, divisor); case "short": return new DivisionValueShort(dividend, divisor); case "int": return new DivisionValueInteger(dividend, divisor); case "long": return new DivisionValueLong(dividend, divisor); case "float": return new DivisionValueFloat(dividend, divisor); case "double": return new DivisionValueDouble(dividend, divisor); default: throw new RuntimeException("Unsupported type for division value. Type: " + type); } }
/** * Creates division value. * * @return An division value. */ @SuppressWarnings("rawtypes") protected Object createDivisionValue() { String type = (String) pop(2); Value dividend = (Value) pop(1); Value divisor = (Value) pop(); switch (type) { case "byte": return new DivisionValueByte(dividend, divisor); case "short": return new DivisionValueShort(dividend, divisor); case "int": return new DivisionValueInteger(dividend, divisor); case "long": return new DivisionValueLong(dividend, divisor); case "float": return new DivisionValueFloat(dividend, divisor); case "double": return new DivisionValueDouble(dividend, divisor); default: throw new RuntimeException("Unsupported type for division value. Type: " + type); } }