Исправлен 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; package com.annimon.ownlang.lib;
import static com.annimon.ownlang.lib.ValueUtils.getFloatNumber;
/** /**
* Wrapper functions and interfaces. * Wrapper functions and interfaces.
*/ */
@ -41,6 +43,10 @@ public final class Converters {
void apply(int i); void apply(int i);
} }
public interface Int4ToVoidFunction {
void apply(int i1, int i2, int i3, int i4);
}
public interface FloatToVoidFunction { public interface FloatToVoidFunction {
void apply(float f); 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) { public static FunctionValue floatToVoid(FloatToVoidFunction f) {
return new FunctionValue(args -> { return new FunctionValue(args -> {
Arguments.check(1, args.length); Arguments.check(1, args.length);
f.apply(getNumber(args[0]).floatValue()); f.apply(getFloatNumber(args[0]));
return NumberValue.ZERO; return NumberValue.ZERO;
}); });
} }
@ -135,10 +152,10 @@ public final class Converters {
public static FunctionValue float4ToVoid(Float4ToVoidFunction f) { public static FunctionValue float4ToVoid(Float4ToVoidFunction f) {
return new FunctionValue(args -> { return new FunctionValue(args -> {
Arguments.check(4, args.length); Arguments.check(4, args.length);
f.apply(getNumber(args[0]).floatValue(), f.apply(getFloatNumber(args[0]),
getNumber(args[1]).floatValue(), getFloatNumber(args[1]),
getNumber(args[2]).floatValue(), getFloatNumber(args[2]),
getNumber(args[3]).floatValue()); getFloatNumber(args[3]));
return NumberValue.ZERO; return NumberValue.ZERO;
}); });
} }
@ -175,9 +192,4 @@ public final class Converters {
return NumberValue.ZERO; 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; 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();
}
} }