2 * This code is generated in org.simantics.scl.runtime.generation.GenerateFunctions.
3 * Do not edit manually!
5 package org.simantics.scl.runtime.function;
7 import java.util.Arrays;
9 @SuppressWarnings("all")
10 public abstract class FunctionImplN implements Function {
13 public FunctionImplN(int arity) {
15 throw new IllegalArgumentException();
20 public Object apply(Object p0) {
23 case 1: return doApply(p0);
24 default: return new UnsaturatedFunction1(this, p0);
26 } catch(ClassCastException e) {
27 throw new CalledWithTooManyParameters();
32 public Object apply(Object p0, Object p1) {
35 case 1: return ((Function)doApply(p0)).apply(p1);
36 case 2: return doApply(p0, p1);
37 default: return new UnsaturatedFunction2(this, p0, p1);
39 } catch(ClassCastException e) {
40 throw new CalledWithTooManyParameters();
45 public Object apply(Object p0, Object p1, Object p2) {
48 case 1: return ((Function)doApply(p0)).apply(p1, p2);
49 case 2: return ((Function)doApply(p0, p1)).apply(p2);
50 case 3: return doApply(p0, p1, p2);
51 default: return new UnsaturatedFunction3(this, p0, p1, p2);
53 } catch(ClassCastException e) {
54 throw new CalledWithTooManyParameters();
59 public Object apply(Object p0, Object p1, Object p2, Object p3) {
62 case 1: return ((Function)doApply(p0)).apply(p1, p2, p3);
63 case 2: return ((Function)doApply(p0, p1)).apply(p2, p3);
64 case 3: return ((Function)doApply(p0, p1, p2)).apply(p3);
65 case 4: return doApply(p0, p1, p2, p3);
66 default: return new UnsaturatedFunction4(this, p0, p1, p2, p3);
68 } catch(ClassCastException e) {
69 throw new CalledWithTooManyParameters();
74 public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4) {
77 case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4);
78 case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4);
79 case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4);
80 case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4);
81 case 5: return doApply(p0, p1, p2, p3, p4);
82 default: return new UnsaturatedFunction5(this, p0, p1, p2, p3, p4);
84 } catch(ClassCastException e) {
85 throw new CalledWithTooManyParameters();
90 public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5) {
93 case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5);
94 case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5);
95 case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5);
96 case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5);
97 case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5);
98 case 6: return doApply(p0, p1, p2, p3, p4, p5);
99 default: return new UnsaturatedFunction6(this, p0, p1, p2, p3, p4, p5);
101 } catch(ClassCastException e) {
102 throw new CalledWithTooManyParameters();
107 public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6) {
110 case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6);
111 case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6);
112 case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6);
113 case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6);
114 case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6);
115 case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6);
116 case 7: return doApply(p0, p1, p2, p3, p4, p5, p6);
117 default: return new UnsaturatedFunction7(this, p0, p1, p2, p3, p4, p5, p6);
119 } catch(ClassCastException e) {
120 throw new CalledWithTooManyParameters();
125 public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7) {
128 case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6, p7);
129 case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6, p7);
130 case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6, p7);
131 case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6, p7);
132 case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6, p7);
133 case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6, p7);
134 case 7: return ((Function)doApply(p0, p1, p2, p3, p4, p5, p6)).apply(p7);
135 case 8: return doApply(p0, p1, p2, p3, p4, p5, p6, p7);
136 default: return new UnsaturatedFunction8(this, p0, p1, p2, p3, p4, p5, p6, p7);
138 } catch(ClassCastException e) {
139 throw new CalledWithTooManyParameters();
143 public abstract Object doApply(Object ... ps);
146 public Object applyArray(Object ... ps) {
147 if(ps.length == arity)
149 else if(ps.length < arity)
150 return new UnsaturatedFunctionN(this, ps);
151 else /* ps.length > arity */ {
153 return ((Function)doApply(Arrays.copyOf(ps, arity))).applyArray(Arrays.copyOfRange(ps, arity, ps.length));
154 } catch(ClassCastException e) {
155 throw new CalledWithTooManyParameters();