Исправлен getFloat и вынесен в ValueUtils, добавлен int4ToVoid

This commit is contained in:
Victor 2016-09-18 11:46:09 +03:00
parent dba0c46ff0
commit fa83c2072d
2 changed files with 32 additions and 10 deletions

View File

@ -1,5 +1,7 @@
package com.annimon.ownlang.lib;
import static com.annimon.ownlang.lib.ValueUtils.getFloatNumber;
/**
* Wrapper functions and interfaces.
*/
@ -41,6 +43,10 @@ public final class Converters {
void apply(int i);
}
public interface Int4ToVoidFunction {
void apply(int i1, int i2, int i3, int i4);
}
public interface FloatToVoidFunction {
void apply(float f);
}
@ -124,10 +130,21 @@ public final class Converters {
});
}
public static FunctionValue int4ToVoid(Int4ToVoidFunction f) {
return new FunctionValue(args -> {
Arguments.check(4, args.length);
f.apply(args[0].asInt(),
args[1].asInt(),
args[2].asInt(),
args[3].asInt());
return NumberValue.ZERO;
});
}
public static FunctionValue floatToVoid(FloatToVoidFunction f) {
return new FunctionValue(args -> {
Arguments.check(1, args.length);
f.apply(getNumber(args[0]).floatValue());
f.apply(getFloatNumber(args[0]));
return NumberValue.ZERO;
});
}
@ -135,10 +152,10 @@ public final class Converters {
public static FunctionValue float4ToVoid(Float4ToVoidFunction f) {
return new FunctionValue(args -> {
Arguments.check(4, args.length);
f.apply(getNumber(args[0]).floatValue(),
getNumber(args[1]).floatValue(),
getNumber(args[2]).floatValue(),
getNumber(args[3]).floatValue());
f.apply(getFloatNumber(args[0]),
getFloatNumber(args[1]),
getFloatNumber(args[2]),
getFloatNumber(args[3]));
return NumberValue.ZERO;
});
}
@ -175,9 +192,4 @@ public final class Converters {
return NumberValue.ZERO;
});
}
public static Number getNumber(Value value) {
if (value.type() == Types.NUMBER) return ((NumberValue) value).raw();
return value.asInt();
}
}

View File

@ -80,4 +80,14 @@ public final class ValueUtils {
}
return result;
}
public static Number getNumber(Value value) {
if (value.type() == Types.NUMBER) return ((NumberValue) value).raw();
return value.asInt();
}
public static float getFloatNumber(Value value) {
if (value.type() == Types.NUMBER) return ((NumberValue) value).raw().floatValue();
return (float) value.asNumber();
}
}