]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/internal/checker/FunctionCheckItem.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.commands / src / org / simantics / scl / commands / internal / checker / FunctionCheckItem.java
1 package org.simantics.scl.commands.internal.checker;\r
2 \r
3 import java.util.List;\r
4 \r
5 import org.simantics.scl.compiler.types.Type;\r
6 import org.simantics.scl.runtime.function.Function;\r
7 \r
8 public class FunctionCheckItem implements CheckItem {\r
9 \r
10     Type parameterType;\r
11     CheckItem next;\r
12     \r
13     public FunctionCheckItem(Type parameterType, CheckItem next) {\r
14         this.parameterType = parameterType;\r
15         this.next = next;\r
16     }\r
17 \r
18     @SuppressWarnings({ "unchecked", "rawtypes" })\r
19     @Override\r
20     public boolean check(Object check, Object[] parameters, int pos) {\r
21         if(pos == parameters.length)\r
22             return true;\r
23         Object nextCheck = ((Function)check).apply(parameters[pos]);\r
24         return next.check(nextCheck, parameters, pos+1);\r
25     }\r
26 \r
27     @Override\r
28     public void collectParameterTypes(List<Type> types) {\r
29         types.add(parameterType);\r
30         next.collectParameterTypes(types);\r
31     }\r
32 \r
33 }\r