/**
* 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
+ */
+package org.simantics.scl.runtime.function;
+
+import java.util.Arrays;
+
+@SuppressWarnings("all")
+public abstract class FunctionImplN implements Function {
+ int arity;
+
+ public FunctionImplN(int arity) {
+ if(arity < 1)
+ throw new IllegalArgumentException();
+ this.arity = arity;
+ }
+
+ @Override
+ public Object apply(Object p0) {
+ try {
+ switch(arity) {
+ case 1: return doApply(p0);
+ default: return new UnsaturatedFunction1(this, p0);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1);
+ case 2: return doApply(p0, p1);
+ default: return new UnsaturatedFunction2(this, p0, p1);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1, Object p2) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1, p2);
+ case 2: return ((Function)doApply(p0, p1)).apply(p2);
+ case 3: return doApply(p0, p1, p2);
+ default: return new UnsaturatedFunction3(this, p0, p1, p2);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1, Object p2, Object p3) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1, p2, p3);
+ case 2: return ((Function)doApply(p0, p1)).apply(p2, p3);
+ case 3: return ((Function)doApply(p0, p1, p2)).apply(p3);
+ case 4: return doApply(p0, p1, p2, p3);
+ default: return new UnsaturatedFunction4(this, p0, p1, p2, p3);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4);
+ case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4);
+ case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4);
+ case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4);
+ case 5: return doApply(p0, p1, p2, p3, p4);
+ default: return new UnsaturatedFunction5(this, p0, p1, p2, p3, p4);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5);
+ case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5);
+ case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5);
+ case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5);
+ case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5);
+ case 6: return doApply(p0, p1, p2, p3, p4, p5);
+ default: return new UnsaturatedFunction6(this, p0, p1, p2, p3, p4, p5);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6);
+ case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6);
+ case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6);
+ case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6);
+ case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6);
+ case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6);
+ case 7: return doApply(p0, p1, p2, p3, p4, p5, p6);
+ default: return new UnsaturatedFunction7(this, p0, p1, p2, p3, p4, p5, p6);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ @Override
+ public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7) {
+ try {
+ switch(arity) {
+ case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6, p7);
+ case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6, p7);
+ case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6, p7);
+ case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6, p7);
+ case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6, p7);
+ case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6, p7);
+ case 7: return ((Function)doApply(p0, p1, p2, p3, p4, p5, p6)).apply(p7);
+ case 8: return doApply(p0, p1, p2, p3, p4, p5, p6, p7);
+ default: return new UnsaturatedFunction8(this, p0, p1, p2, p3, p4, p5, p6, p7);
+ }
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+
+ public abstract Object doApply(Object ... ps);
+
+ @Override
+ public Object applyArray(Object ... ps) {
+ if(ps.length == arity)
+ return doApply(ps);
+ else if(ps.length < arity)
+ return new UnsaturatedFunctionN(this, ps);
+ else /* ps.length > arity */ {
+ try {
+ return ((Function)doApply(Arrays.copyOf(ps, arity))).applyArray(Arrays.copyOfRange(ps, arity, ps.length));
+ } catch(ClassCastException e) {
+ throw new CalledWithTooManyParameters();
+ }
+ }
+ }
+}