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