Skip to content

Commit fa83c20

Browse files
committed
Исправлен getFloat и вынесен в ValueUtils, добавлен int4ToVoid
1 parent dba0c46 commit fa83c20

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

src/main/java/com/annimon/ownlang/lib/Converters.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.annimon.ownlang.lib;
22

3+
import static com.annimon.ownlang.lib.ValueUtils.getFloatNumber;
4+
35
/**
46
* Wrapper functions and interfaces.
57
*/
@@ -41,6 +43,10 @@ public interface IntToVoidFunction {
4143
void apply(int i);
4244
}
4345

46+
public interface Int4ToVoidFunction {
47+
void apply(int i1, int i2, int i3, int i4);
48+
}
49+
4450
public interface FloatToVoidFunction {
4551
void apply(float f);
4652
}
@@ -124,21 +130,32 @@ public static FunctionValue intToVoid(IntToVoidFunction f) {
124130
});
125131
}
126132

133+
public static FunctionValue int4ToVoid(Int4ToVoidFunction f) {
134+
return new FunctionValue(args -> {
135+
Arguments.check(4, args.length);
136+
f.apply(args[0].asInt(),
137+
args[1].asInt(),
138+
args[2].asInt(),
139+
args[3].asInt());
140+
return NumberValue.ZERO;
141+
});
142+
}
143+
127144
public static FunctionValue floatToVoid(FloatToVoidFunction f) {
128145
return new FunctionValue(args -> {
129146
Arguments.check(1, args.length);
130-
f.apply(getNumber(args[0]).floatValue());
147+
f.apply(getFloatNumber(args[0]));
131148
return NumberValue.ZERO;
132149
});
133150
}
134151

135152
public static FunctionValue float4ToVoid(Float4ToVoidFunction f) {
136153
return new FunctionValue(args -> {
137154
Arguments.check(4, args.length);
138-
f.apply(getNumber(args[0]).floatValue(),
139-
getNumber(args[1]).floatValue(),
140-
getNumber(args[2]).floatValue(),
141-
getNumber(args[3]).floatValue());
155+
f.apply(getFloatNumber(args[0]),
156+
getFloatNumber(args[1]),
157+
getFloatNumber(args[2]),
158+
getFloatNumber(args[3]));
142159
return NumberValue.ZERO;
143160
});
144161
}
@@ -175,9 +192,4 @@ public static FunctionValue stringToVoid(StringToVoidFunction f) {
175192
return NumberValue.ZERO;
176193
});
177194
}
178-
179-
public static Number getNumber(Value value) {
180-
if (value.type() == Types.NUMBER) return ((NumberValue) value).raw();
181-
return value.asInt();
182-
}
183195
}

src/main/java/com/annimon/ownlang/lib/ValueUtils.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,14 @@ public static ArrayValue toValue(JSONArray json) {
8080
}
8181
return result;
8282
}
83+
84+
public static Number getNumber(Value value) {
85+
if (value.type() == Types.NUMBER) return ((NumberValue) value).raw();
86+
return value.asInt();
87+
}
88+
89+
public static float getFloatNumber(Value value) {
90+
if (value.type() == Types.NUMBER) return ((NumberValue) value).raw().floatValue();
91+
return (float) value.asNumber();
92+
}
8393
}

0 commit comments

Comments
 (0)