mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Исправлен getFloat и вынесен в ValueUtils, добавлен int4ToVoid
This commit is contained in:
parent
dba0c46ff0
commit
fa83c2072d
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user