Skip to content

Commit 85d32e9

Browse files
authored
Merge pull request #28 from PetrPytelka/extensible_numeric_types
AbstractNumericRightValue can be parametrized with different inner type
2 parents 7a19b39 + cd51539 commit 85d32e9

6 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/main/java/com/scriptbasic/executors/operators/AbstractBinaryFullCircuitNumericOperator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ protected final RightValue evaluateOn(final RightValue leftOperand,
3939
"Can not execute the operation on undefined value.");
4040
}
4141
if (leftOperand.isNumeric() && rightOperand.isNumeric()) {
42-
a = ((AbstractNumericRightValue<Number>) leftOperand).getValue();
43-
b = ((AbstractNumericRightValue<Number>) rightOperand).getValue();
42+
a = ((AbstractNumericRightValue<Number, Object>) leftOperand).getNumericValue();
43+
b = ((AbstractNumericRightValue<Number, Object>) rightOperand).getNumericValue();
4444
if (leftOperand.isDouble()) {
4545
if (rightOperand.isDouble()) {
4646
result = operateOnDoubleDouble((Double) a, (Double) b);
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
package com.scriptbasic.executors.rightvalues;
22

3-
public abstract class AbstractNumericRightValue<T extends Number> extends
3+
public abstract class AbstractNumericRightValue<N extends Number, T> extends
44
AbstractPrimitiveRightValue<T> {
5+
6+
/**
7+
* Return numeric value representing this right value
8+
*
9+
* @return numeric value
10+
*/
11+
public abstract N getNumericValue();
12+
513
}

src/main/java/com/scriptbasic/executors/rightvalues/BasicBooleanValue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public BasicBooleanValue(final Boolean b) {
99
}
1010

1111
private static Boolean convertNumeric(
12-
final AbstractNumericRightValue<Number> originalValue) {
12+
final AbstractNumericRightValue<Number, Object> originalValue) {
1313
final Boolean convertedValue;
1414
if (originalValue.isLong()) {
1515
final var l = (Long) originalValue.getValue();

src/main/java/com/scriptbasic/executors/rightvalues/BasicDoubleValue.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.scriptbasic.interfaces.BasicRuntimeException;
44
import com.scriptbasic.spi.RightValue;
55

6-
public class BasicDoubleValue extends AbstractNumericRightValue<Double> {
6+
public class BasicDoubleValue extends AbstractNumericRightValue<Double, Double> {
77

88
public BasicDoubleValue(final Double d) {
99
setValue(d);
@@ -59,4 +59,9 @@ public String toString() {
5959
return super.toString();
6060
}
6161
}
62+
63+
@Override
64+
public Double getNumericValue() {
65+
return getValue();
66+
}
6267
}

src/main/java/com/scriptbasic/executors/rightvalues/BasicLongValue.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.scriptbasic.interfaces.BasicRuntimeException;
44
import com.scriptbasic.spi.RightValue;
55

6-
public class BasicLongValue extends AbstractNumericRightValue<Long> {
6+
public class BasicLongValue extends AbstractNumericRightValue<Long, Long> {
77

88
public BasicLongValue(final Long i) {
99
setValue(i);
@@ -55,4 +55,9 @@ public String toString() {
5555
return super.toString();
5656
}
5757
}
58+
59+
@Override
60+
public Long getNumericValue() {
61+
return getValue();
62+
}
5863
}

src/main/java/com/scriptbasic/utility/RightValueUtility.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public static Object getValueObject(final RightValue arg) {
3737
public static Integer convert2Integer(final RightValue index)
3838
throws ScriptBasicException {
3939
if (index.isNumeric()) {
40-
return ((AbstractNumericRightValue<Number>) index).getValue().intValue();
40+
return ((AbstractNumericRightValue<Number, Object>) index).getNumericValue().intValue();
4141
} else {
4242
throw new BasicRuntimeException(
4343
index.toString()

0 commit comments

Comments
 (0)