]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/function/FunctionImplN.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / function / FunctionImplN.java
diff --git a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/function/FunctionImplN.java b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/function/FunctionImplN.java
new file mode 100755 (executable)
index 0000000..1c9d7d9
--- /dev/null
@@ -0,0 +1,159 @@
+/**
+ * This code is generated in org.simantics.scl.runtime.generation.GenerateFunctions.
+ * Do not edit manually!
+ */\r
+package org.simantics.scl.runtime.function;\r
+\r
+import java.util.Arrays;\r
+\r
+@SuppressWarnings("all")\r
+public abstract class FunctionImplN implements Function {\r
+    int arity;\r
+\r
+    public FunctionImplN(int arity) {\r
+        if(arity < 1)\r
+            throw new IllegalArgumentException();\r
+        this.arity = arity;\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return doApply(p0);\r
+            default: return new UnsaturatedFunction1(this, p0);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1);\r
+            case 2: return doApply(p0, p1);\r
+            default: return new UnsaturatedFunction2(this, p0, p1);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1, Object p2) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1, p2);\r
+            case 2: return ((Function)doApply(p0, p1)).apply(p2);\r
+            case 3: return doApply(p0, p1, p2);\r
+            default: return new UnsaturatedFunction3(this, p0, p1, p2);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1, Object p2, Object p3) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1, p2, p3);\r
+            case 2: return ((Function)doApply(p0, p1)).apply(p2, p3);\r
+            case 3: return ((Function)doApply(p0, p1, p2)).apply(p3);\r
+            case 4: return doApply(p0, p1, p2, p3);\r
+            default: return new UnsaturatedFunction4(this, p0, p1, p2, p3);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4);\r
+            case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4);\r
+            case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4);\r
+            case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4);\r
+            case 5: return doApply(p0, p1, p2, p3, p4);\r
+            default: return new UnsaturatedFunction5(this, p0, p1, p2, p3, p4);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5);\r
+            case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5);\r
+            case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5);\r
+            case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5);\r
+            case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5);\r
+            case 6: return doApply(p0, p1, p2, p3, p4, p5);\r
+            default: return new UnsaturatedFunction6(this, p0, p1, p2, p3, p4, p5);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6);\r
+            case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6);\r
+            case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6);\r
+            case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6);\r
+            case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6);\r
+            case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6);\r
+            case 7: return doApply(p0, p1, p2, p3, p4, p5, p6);\r
+            default: return new UnsaturatedFunction7(this, p0, p1, p2, p3, p4, p5, p6);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7) {\r
+        try {\r
+            switch(arity) {\r
+            case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6, p7);\r
+            case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6, p7);\r
+            case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6, p7);\r
+            case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6, p7);\r
+            case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6, p7);\r
+            case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6, p7);\r
+            case 7: return ((Function)doApply(p0, p1, p2, p3, p4, p5, p6)).apply(p7);\r
+            case 8: return doApply(p0, p1, p2, p3, p4, p5, p6, p7);\r
+            default: return new UnsaturatedFunction8(this, p0, p1, p2, p3, p4, p5, p6, p7);\r
+            }\r
+        } catch(ClassCastException e) {\r
+            throw new CalledWithTooManyParameters();\r
+        }\r
+    }\r
+\r
+    public abstract Object doApply(Object ... ps);\r
+\r
+    @Override\r
+    public Object applyArray(Object ... ps) {\r
+        if(ps.length == arity)\r
+            return doApply(ps);\r
+        else if(ps.length < arity)\r
+            return new UnsaturatedFunctionN(this, ps);\r
+        else /* ps.length > arity */ {\r
+            try {\r
+                return ((Function)doApply(Arrays.copyOf(ps, arity))).applyArray(Arrays.copyOfRange(ps, arity, ps.length));\r
+            } catch(ClassCastException e) {\r
+                throw new CalledWithTooManyParameters();\r
+            }\r
+        }\r
+    }\r
+}\r