Skip to content

Commit 6dbbc7f

Browse files
authored
Merge pull request #55 from scijava/scijava/scijava-ops-api/op-utils-to-engine
Move `OpUtils` back into SciJava Ops Engine
2 parents a671c5c + 0bae5b0 commit 6dbbc7f

File tree

9 files changed

+16
-60
lines changed

9 files changed

+16
-60
lines changed

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/OpUtils.java

Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,12 @@
3737
import org.scijava.ops.api.OpCandidate;
3838
import org.scijava.common3.validity.ValidityException;
3939
import org.scijava.common3.validity.ValidityProblem;
40-
import org.scijava.ops.api.OpCandidate.StatusCode;
41-
import org.scijava.ops.api.OpDependencyMember;
4240
import org.scijava.ops.api.OpInfo;
4341
import org.scijava.ops.api.OpRef;
4442
import org.scijava.struct.Member;
4543
import org.scijava.struct.MemberInstance;
4644
import org.scijava.struct.Struct;
4745
import org.scijava.struct.StructInstance;
48-
import org.scijava.struct.ValueAccessible;
4946
import org.scijava.types.Types;
5047

5148
/**
@@ -114,48 +111,11 @@ public static List<MemberInstance<?>> inputs(StructInstance<?> op) {
114111
.collect(Collectors.toList());
115112
}
116113

117-
public static List<Member<?>> inputs(OpCandidate candidate) {
118-
return inputs(candidate.struct());
119-
}
120-
121-
public static List<Member<?>> inputs(final Struct struct) {
122-
return struct.members().stream() //
123-
.filter(member -> member.isInput()) //
124-
.collect(Collectors.toList());
125-
}
126-
127-
public static Type[] inputTypes(OpCandidate candidate) {
128-
return getTypes(inputs(candidate.struct()));
129-
}
130-
131-
public static Type[] inputTypes(Struct struct) {
132-
return getTypes(inputs(struct));
133-
}
134-
135-
public static Member<?> output(OpCandidate candidate) {
136-
return candidate.opInfo().output();
137-
}
138-
139-
public static Type outputType(OpCandidate candidate) {
140-
return output(candidate).getType();
141-
}
142-
143-
public static List<Member<?>> outputs(final Struct struct) {
144-
return struct.members().stream() //
145-
.filter(member -> member.isOutput()) //
146-
.collect(Collectors.toList());
147-
}
148-
149-
public static List<MemberInstance<?>> outputs(StructInstance<?> op) {
150-
return op.members().stream() //
151-
.filter(memberInstance -> memberInstance.member().isOutput()) //
152-
.collect(Collectors.toList());
153-
}
154-
155114
public static void checkHasSingleOutput(Struct struct) throws
156115
ValidityException
157116
{
158-
final int numOutputs = OpUtils.outputs(struct).size();
117+
final long numOutputs = struct.members().stream() //
118+
.filter(m -> m.isOutput()).count();
159119
if (numOutputs != 1) {
160120
final String error = numOutputs == 0 //
161121
? "No output parameters specified. Must specify exactly one." //
@@ -237,7 +197,7 @@ public static Method findFunctionalMethod(Class<?> cls) {
237197
* @return the index of the mutable argument.
238198
*/
239199
public static int ioArgIndex(final OpInfo info) {
240-
List<Member<?>> inputs = OpUtils.inputs(info.struct());
200+
List<Member<?>> inputs = info.inputs();
241201
Optional<Member<?>>
242202
ioArg = inputs.stream().filter(m -> m.isInput() && m.isOutput()).findFirst();
243203
if(ioArg.isEmpty()) return -1;

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/reduce/AbstractInfoReducer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public ReducedOpInfo reduce(OpInfo info, int numReductions) {
2626
int originalArity = arityOf(rawType);
2727
int reducedArity = originalArity - numReductions;
2828
Class<?> reducedRawType = ofArity(reducedArity);
29-
Type[] inputTypes = OpUtils.inputTypes(info.struct());
29+
Type[] inputTypes = info.inputTypes().toArray(Type[]::new);
3030
Type outputType = info.output().getType();
3131
Type[] newTypes = new Type[reducedArity + 1];
3232
if (reducedArity >= 0) System.arraycopy(inputTypes, 0, newTypes, 0,

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/reduce/ReducedOpInfoGenerator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import org.scijava.ops.api.OpInfo;
55
import org.scijava.ops.api.OpInfoGenerator;
6-
import org.scijava.ops.engine.OpUtils;
76
import org.scijava.struct.Member;
87

98
import java.util.*;
@@ -23,7 +22,7 @@ public boolean canGenerateFrom(Object o) {
2322
if (!(o instanceof OpInfo)) return false;
2423
OpInfo info = (OpInfo) o;
2524
// We only benefit from OpInfos with optional parameters
26-
boolean allParamsRequired = OpUtils.inputs(info.struct()).parallelStream() //
25+
boolean allParamsRequired = info.inputs().parallelStream() //
2726
.allMatch(Member::isRequired); //
2827
if (allParamsRequired) return false;
2928
// If we have a InfoReducer, then we can reduce

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/reduce/ReductionUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private static String className(ReducedOpInfo reducedInfo) {
116116

117117
private static String memberNames(ReducedOpInfo reducedInfo) {
118118
Stream<String> memberNames = //
119-
Streams.concat(Arrays.stream(OpUtils.inputTypes(reducedInfo.struct())), //
119+
Streams.concat(reducedInfo.inputTypes().stream(), //
120120
Stream.of(reducedInfo.output().getType())) //
121121
.map(type -> getClassName(Types.raw(type)));
122122
Iterable<String> iterableNames = (Iterable<String>) memberNames::iterator;
@@ -229,9 +229,9 @@ private static String createFunctionalMethod(ReducedOpInfo info) {
229229
}
230230
sb.append("op." + srcM.getName() + "(");
231231
int i;
232-
List<Member<?>> totalArguments = OpUtils.inputs(info.srcInfo().struct());
233-
int totalArgs = OpUtils.inputs(info.srcInfo().struct()).size();
234-
long totalOptionals = OpUtils.inputs(info.srcInfo().struct())
232+
List<Member<?>> totalArguments = info.srcInfo().inputs();
233+
int totalArgs = totalArguments.size();
234+
long totalOptionals = totalArguments
235235
.parallelStream().filter(member -> !member.isRequired())
236236
.count();
237237
long neededOptionals = totalOptionals - info.paramsReduced();

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/InfoSimplificationGenerator.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import org.scijava.ops.api.OpEnvironment;
1414
import org.scijava.ops.api.OpInfo;
1515
import org.scijava.ops.api.OpRef;
16-
import org.scijava.ops.engine.OpUtils;
1716
import org.scijava.types.Types;
1817

1918

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationMetadata.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
package org.scijava.ops.engine.simplify;
32

43
import java.lang.reflect.Type;

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationUtils.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,12 @@ public static List<List<OpInfo>> simplifyArgs(OpEnvironment env, Type... t){
170170
}
171171

172172
/**
173-
* Obtains all {@link Simplifier}s known to the environment that can operate
173+
* Obtains all simplifiers known to the environment that can operate
174174
* on {@code t}. If no {@code Simplifier}s are known to explicitly work on
175175
* {@code t}, an {@link Identity} simplifier will be created.
176176
*
177177
* @param t - the {@link Type} we are interested in simplifying.
178-
* @return a list of {@link Simplifier}s that can simplify {@code t}.
178+
* @return a list of simplifiers that can simplify {@code t}.
179179
*/
180180
public static List<OpInfo> getSimplifiers(OpEnvironment env, Type t) {
181181
// TODO: optimize
@@ -199,12 +199,12 @@ public static List<List<OpInfo>> focusArgs(OpEnvironment env, Type... t){
199199

200200

201201
/**
202-
* Obtains all {@link Simplifier}s known to the environment that can operate
202+
* Obtains all simplifiers known to the environment that can operate
203203
* on {@code t}. If no {@code Simplifier}s are known to explicitly work on
204204
* {@code t}, an {@link Identity} simplifier will be created.
205205
*
206206
* @param t - the {@link Type} we are interested in simplifying.
207-
* @return a list of {@link Simplifier}s that can simplify {@code t}.
207+
* @return a list of simplifiers that can simplify {@code t}.
208208
*/
209209
public static List<OpInfo> getFocusers(OpEnvironment env, Type t) {
210210
// TODO: optimize
@@ -217,7 +217,7 @@ public static List<OpInfo> getFocusers(OpEnvironment env, Type t) {
217217
}
218218

219219
/**
220-
* Creates a Class given an Op and a set of {@link Simplifier}s. This class:
220+
* Creates a Class given an Op and a set of simplifiers. This class:
221221
* <ul>
222222
* <li>is of the same functional type as the given Op</li>
223223
* <li>has type arguments that are of the simplified form of the type

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/struct/ClassParameterMemberParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import java.util.Arrays;
99
import java.util.List;
1010

11+
import org.scijava.common3.validity.ValidityException;
12+
import org.scijava.common3.validity.ValidityProblem;
1113
import org.scijava.ops.engine.OpUtils;
1214
import org.scijava.struct.MemberParser;
1315
import org.scijava.struct.Structs;
14-
import org.scijava.common3.validity.ValidityException;
15-
import org.scijava.common3.validity.ValidityProblem;
1616
import org.scijava.types.Types;
1717

1818
public class ClassParameterMemberParser implements

scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/struct/LazilyGeneratedMethodParameterData.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.scijava.ops.spi.OpDependency;
1717
import org.scijava.struct.FunctionalMethodType;
1818
import org.scijava.struct.ItemIO;
19-
import org.scijava.struct.Struct;
2019

2120
import com.github.therapi.runtimejavadoc.MethodJavadoc;
2221
import com.github.therapi.runtimejavadoc.OtherJavadoc;

0 commit comments

Comments
 (0)