Skip to content

Commit 77e46a9

Browse files
committed
OpBuilderTest autogeneration
1 parent e973e32 commit 77e46a9

File tree

10 files changed

+1766
-199
lines changed

10 files changed

+1766
-199
lines changed

src/test/java/org/scijava/ops/core/builder/OpBuilderTest.java

Lines changed: 967 additions & 94 deletions
Large diffs are not rendered by default.

src/test/java/org/scijava/ops/core/builder/OpBuilderTestOps.java

Lines changed: 204 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,31 @@ public class OpBuilderTestOps {
5454
* The general procedure for these Ops: Given a set of inputs in1, in2, ...,
5555
* inN, The output will be sum(in1, in2, ..., inN).
5656
*/
57-
58-
// ARITY ZERO
57+
58+
// ARITY 0
5959
@OpField(names = "test.addDoubles")
6060
public final Producer<Double> addDoubles0 = () -> 0.;
61-
61+
6262
// ARITY 1
6363
@OpField(names = "test.addDoubles")
64-
public final Function<Double, Double> addDoubles1 = (in1) -> in1;
65-
64+
public final Function<Double, Double> addDoubles1 = (input) -> input;
65+
6666
// ARITY 2
6767
@OpField(names = "test.addDoubles")
68-
public final BiFunction<Double, Double, Double> addDoubles2 = (in1, in2) -> in1 + in2;
69-
70-
// ARITY 3+ (CODE GENERATE THESE)
68+
public final BiFunction<Double, Double, Double> addDoubles2 = (input1, input2) -> input1 + input2;
69+
70+
// ARITY 3
71+
@OpField(names = "test.addDoubles")
72+
public final Functions.Arity3<Double, Double, Double, Double> addDoubles3 = (input1, input2, input3) -> input1 + input2 + input3;
73+
74+
// ARITY 4
7175
@OpField(names = "test.addDoubles")
72-
public final Functions.Arity3<Double, Double, Double, Double> addDoubles3 = (in1, in2, in3) -> in1 + in2 + in3;
76+
public final Functions.Arity4<Double, Double, Double, Double, Double> addDoubles4 = (input1, input2, input3, input4) -> input1 + input2 + input3 + input4;
77+
78+
// ARITY 5
79+
@OpField(names = "test.addDoubles")
80+
public final Functions.Arity5<Double, Double, Double, Double, Double, Double> addDoubles5 = (input1, input2, input3, input4, input5) -> input1 + input2 + input3 + input4 + input5;
81+
7382

7483
/*
7584
* -- INPLACES --
@@ -78,55 +87,151 @@ public class OpBuilderTestOps {
7887
* io, ..., inN, the output will be io = in1 * in2 * ... * io * ... * inN.
7988
* N.B. We do this in arrays since the doubles themselves are immutable.
8089
*/
81-
82-
// ARITY ONE
90+
// ARITY 1
8391
@OpField(names = "test.mulArrays")
84-
public final Inplaces.Arity1<double[]> powDoubles1 = (io) -> {};
85-
86-
// ARITY TWO
92+
public final Inplaces.Arity1<double[]> powDoubles1_1 = (io) -> {
93+
for(int i = 0; i < io.length; i++) {
94+
}
95+
};
96+
97+
// ARITY 2
8798
@OpField(names = "test.mulArrays")
88-
public final Inplaces.Arity2_1<double[], double[]> powDoubles2_1 = (io,
89-
in2) -> {
90-
for(int i = 0; i < io.length; i++) {
91-
io[i] *= in2[i];
92-
}
93-
};
94-
99+
public final Inplaces.Arity2_1<double[], double[]> powDoubles2_1 = (io, in2) -> {
100+
for(int i = 0; i < io.length; i++) {
101+
io[i] *= in2[i];
102+
}
103+
};
104+
105+
// ARITY 2
95106
@OpField(names = "test.mulArrays")
96-
public final Inplaces.Arity2_2<double[], double[]> powDoubles2_2 = (in1,
97-
io) -> {
98-
for(int i = 0; i < io.length; i++) {
99-
io[i] *= in1[i];
100-
}
101-
};
102-
103-
// ARITY THREES
107+
public final Inplaces.Arity2_2<double[], double[]> powDoubles2_2 = (in1, io) -> {
108+
for(int i = 0; i < io.length; i++) {
109+
io[i] *= in1[i];
110+
}
111+
};
112+
113+
// ARITY 3
104114
@OpField(names = "test.mulArrays")
105-
public final Inplaces.Arity3_1<double[], double[], double[]> powDoubles3_1 = (io, in2,
106-
in3) -> {
107-
for(int i = 0; i < io.length; i++) {
108-
io[i] *= in2[i];
109-
io[i] *= in3[i];
110-
}
111-
};
112-
115+
public final Inplaces.Arity3_1<double[], double[], double[]> powDoubles3_1 = (io, in2, in3) -> {
116+
for(int i = 0; i < io.length; i++) {
117+
io[i] *= in2[i];
118+
io[i] *= in3[i];
119+
}
120+
};
121+
122+
// ARITY 3
113123
@OpField(names = "test.mulArrays")
114-
public final Inplaces.Arity3_2<double[], double[], double[]> powDoubles3_2 = (in1, io,
115-
in3) -> {
116-
for(int i = 0; i < io.length; i++) {
117-
io[i] *= in1[i];
118-
io[i] *= in3[i];
119-
}
120-
};
121-
124+
public final Inplaces.Arity3_2<double[], double[], double[]> powDoubles3_2 = (in1, io, in3) -> {
125+
for(int i = 0; i < io.length; i++) {
126+
io[i] *= in1[i];
127+
io[i] *= in3[i];
128+
}
129+
};
130+
131+
// ARITY 3
132+
@OpField(names = "test.mulArrays")
133+
public final Inplaces.Arity3_3<double[], double[], double[]> powDoubles3_3 = (in1, in2, io) -> {
134+
for(int i = 0; i < io.length; i++) {
135+
io[i] *= in1[i];
136+
io[i] *= in2[i];
137+
}
138+
};
139+
140+
// ARITY 4
141+
@OpField(names = "test.mulArrays")
142+
public final Inplaces.Arity4_1<double[], double[], double[], double[]> powDoubles4_1 = (io, in2, in3, in4) -> {
143+
for(int i = 0; i < io.length; i++) {
144+
io[i] *= in2[i];
145+
io[i] *= in3[i];
146+
io[i] *= in4[i];
147+
}
148+
};
149+
150+
// ARITY 4
151+
@OpField(names = "test.mulArrays")
152+
public final Inplaces.Arity4_2<double[], double[], double[], double[]> powDoubles4_2 = (in1, io, in3, in4) -> {
153+
for(int i = 0; i < io.length; i++) {
154+
io[i] *= in1[i];
155+
io[i] *= in3[i];
156+
io[i] *= in4[i];
157+
}
158+
};
159+
160+
// ARITY 4
161+
@OpField(names = "test.mulArrays")
162+
public final Inplaces.Arity4_3<double[], double[], double[], double[]> powDoubles4_3 = (in1, in2, io, in4) -> {
163+
for(int i = 0; i < io.length; i++) {
164+
io[i] *= in1[i];
165+
io[i] *= in2[i];
166+
io[i] *= in4[i];
167+
}
168+
};
169+
170+
// ARITY 4
171+
@OpField(names = "test.mulArrays")
172+
public final Inplaces.Arity4_4<double[], double[], double[], double[]> powDoubles4_4 = (in1, in2, in3, io) -> {
173+
for(int i = 0; i < io.length; i++) {
174+
io[i] *= in1[i];
175+
io[i] *= in2[i];
176+
io[i] *= in3[i];
177+
}
178+
};
179+
180+
// ARITY 5
181+
@OpField(names = "test.mulArrays")
182+
public final Inplaces.Arity5_1<double[], double[], double[], double[], double[]> powDoubles5_1 = (io, in2, in3, in4, in5) -> {
183+
for(int i = 0; i < io.length; i++) {
184+
io[i] *= in2[i];
185+
io[i] *= in3[i];
186+
io[i] *= in4[i];
187+
io[i] *= in5[i];
188+
}
189+
};
190+
191+
// ARITY 5
192+
@OpField(names = "test.mulArrays")
193+
public final Inplaces.Arity5_2<double[], double[], double[], double[], double[]> powDoubles5_2 = (in1, io, in3, in4, in5) -> {
194+
for(int i = 0; i < io.length; i++) {
195+
io[i] *= in1[i];
196+
io[i] *= in3[i];
197+
io[i] *= in4[i];
198+
io[i] *= in5[i];
199+
}
200+
};
201+
202+
// ARITY 5
122203
@OpField(names = "test.mulArrays")
123-
public final Inplaces.Arity3_3<double[], double[], double[]> powDoubles3_3 = (in1, in2,
124-
io) -> {
125-
for(int i = 0; i < io.length; i++) {
126-
io[i] *= in1[i];
127-
io[i] *= in2[i];
128-
}
129-
};
204+
public final Inplaces.Arity5_3<double[], double[], double[], double[], double[]> powDoubles5_3 = (in1, in2, io, in4, in5) -> {
205+
for(int i = 0; i < io.length; i++) {
206+
io[i] *= in1[i];
207+
io[i] *= in2[i];
208+
io[i] *= in4[i];
209+
io[i] *= in5[i];
210+
}
211+
};
212+
213+
// ARITY 5
214+
@OpField(names = "test.mulArrays")
215+
public final Inplaces.Arity5_4<double[], double[], double[], double[], double[]> powDoubles5_4 = (in1, in2, in3, io, in5) -> {
216+
for(int i = 0; i < io.length; i++) {
217+
io[i] *= in1[i];
218+
io[i] *= in2[i];
219+
io[i] *= in3[i];
220+
io[i] *= in5[i];
221+
}
222+
};
223+
224+
// ARITY 5
225+
@OpField(names = "test.mulArrays")
226+
public final Inplaces.Arity5_5<double[], double[], double[], double[], double[]> powDoubles5_5 = (in1, in2, in3, in4, io) -> {
227+
for(int i = 0; i < io.length; i++) {
228+
io[i] *= in1[i];
229+
io[i] *= in2[i];
230+
io[i] *= in3[i];
231+
io[i] *= in4[i];
232+
}
233+
};
234+
130235

131236
/*
132237
* -- COMPUTERS --
@@ -138,49 +243,65 @@ public class OpBuilderTestOps {
138243

139244
// ARITY 0
140245
@OpField(names = "test.addArrays")
141-
public final Computers.Arity0<double[]> mulStrings0 = (out) -> {
142-
for (int i = 0; i < out.length; i++)
143-
out[i] = 0;
246+
public final Computers.Arity0<double[]> mulStrings0 = (output) -> {
247+
for (int i = 0; i < output.length; i++) {
248+
output[i] = 0;
249+
}
144250
};
145251

146252
// ARITY 1
147253
@OpField(names = "test.addArrays")
148-
public final Computers.Arity1<double[], double[]> mulStrings1 = (in,
149-
out) -> {
150-
for(int i = 0; i < out.length; i++) {
151-
out[i] = in[i];
152-
}
153-
};
254+
public final Computers.Arity1<double[], double[]> mulStrings1 = (input, output) -> {
255+
for (int i = 0; i < output.length; i++) {
256+
output[i] = 0;
257+
output[i] += input[i];
258+
}
259+
};
154260

155261
// ARITY 2
156262
@OpField(names = "test.addArrays")
157-
public final Computers.Arity2<double[], double[], double[]> mulStrings2 = (in1, in2,
158-
out) -> {
159-
for(int i = 0; i < out.length; i++) {
160-
out[i] = in1[i] + in2[i];
161-
}
162-
};
263+
public final Computers.Arity2<double[], double[], double[]> mulStrings2 = (input1, input2, output) -> {
264+
for (int i = 0; i < output.length; i++) {
265+
output[i] = 0;
266+
output[i] += input1[i];
267+
output[i] += input2[i];
268+
}
269+
};
163270

164271
// ARITY 3
165272
@OpField(names = "test.addArrays")
166-
public final Computers.Arity3<double[], double[], double[], double[]> mulStrings3 = (in1, in2, in3,
167-
out) -> {
168-
for(int i = 0; i < out.length; i++) {
169-
out[i] = in1[i] + in2[i] + in3[i];
170-
}
171-
};
172-
173-
// TODO: delete
273+
public final Computers.Arity3<double[], double[], double[], double[]> mulStrings3 = (input1, input2, input3, output) -> {
274+
for (int i = 0; i < output.length; i++) {
275+
output[i] = 0;
276+
output[i] += input1[i];
277+
output[i] += input2[i];
278+
output[i] += input3[i];
279+
}
280+
};
174281

175-
@OpField(names = "test.castToInt")
176-
public final Computers.Arity1<double[], int[]> castToInt = (src, dest) -> {
177-
for (int i = 0; i < dest.length; i++)
178-
dest[i] = (int) src[i];
282+
// ARITY 4
283+
@OpField(names = "test.addArrays")
284+
public final Computers.Arity4<double[], double[], double[], double[], double[]> mulStrings4 = (input1, input2, input3, input4, output) -> {
285+
for (int i = 0; i < output.length; i++) {
286+
output[i] = 0;
287+
output[i] += input1[i];
288+
output[i] += input2[i];
289+
output[i] += input3[i];
290+
output[i] += input4[i];
291+
}
179292
};
180293

181-
@OpField(names = "test.concat")
182-
public final Computers.Arity2<String[], Object[], String[]> concat = (s, o, out) -> {
183-
for (int i = 0; i < out.length; i++)
184-
out[i] = s[i] + o[i];
294+
// ARITY 5
295+
@OpField(names = "test.addArrays")
296+
public final Computers.Arity5<double[], double[], double[], double[], double[], double[]> mulStrings5 = (input1, input2, input3, input4, input5, output) -> {
297+
for (int i = 0; i < output.length; i++) {
298+
output[i] = 0;
299+
output[i] += input1[i];
300+
output[i] += input2[i];
301+
output[i] += input3[i];
302+
output[i] += input4[i];
303+
output[i] += input5[i];
304+
}
185305
};
306+
186307
}

templates/main/java/org/scijava/ops/core/builder/OpBuilder.list

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@
22
arities = (1..maxArity).collect()
33

44
[OpBuilder.java]
5-
functionArity = ```
6-
{ arity ->
7-
arity == 1 ? 'Function' :
8-
arity == 2 ? 'BiFunction' :
9-
"Functions.Arity${arity}"
10-
}
11-
```
125
inplaceArityNumber = ```
136
{ arity, num ->
147
arity == 1 ? '1' :

templates/main/java/org/scijava/ops/function/Globals.list

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,37 @@ string = "hello world"
22
maxArity = 5
33
numConsumers = maxArity+1
44

5+
simplifiedInplace = ```
6+
{ arity, num ->
7+
arity == 1 ? "Arity1" :
8+
"Arity${arity}_${num}"
9+
}
10+
```
11+
inplaceType = ```
12+
{ arity, num ->
13+
"Inplaces." + simplifiedInplace(arity,num)
14+
}
15+
```
16+
computerArity = ```
17+
{ arity ->
18+
"Computers.Arity${arity}"
19+
}
20+
```
521
consumerArity = ```
622
{ arity ->
723
arity == 0 ? 'Consumer' :
824
arity == 1 ? 'BiConsumer' :
925
"Consumers.Arity${arity+1}"
1026
}
1127
```
28+
functionArity = ```
29+
{ arity ->
30+
arity == 0 ? 'Producer' :
31+
arity == 1 ? 'Function' :
32+
arity == 2 ? 'BiFunction' :
33+
"Functions.Arity${arity}"
34+
}
35+
```
1236
genericParamTypes = ```
1337
{ arity ->
1438
arity == 0 ? ['O'] :

0 commit comments

Comments
 (0)