]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 /**
2  * This code is generated in org.simantics.scl.runtime.generation.GenerateFunctions.
3  * Do not edit manually!
4  */\r
5 package org.simantics.scl.runtime.function;\r
6 \r
7 import java.util.Arrays;\r
8 \r
9 @SuppressWarnings("all")\r
10 public abstract class FunctionImplN implements Function {\r
11     int arity;\r
12 \r
13     public FunctionImplN(int arity) {\r
14         if(arity < 1)\r
15             throw new IllegalArgumentException();\r
16         this.arity = arity;\r
17     }\r
18 \r
19     @Override\r
20     public Object apply(Object p0) {\r
21         try {\r
22             switch(arity) {\r
23             case 1: return doApply(p0);\r
24             default: return new UnsaturatedFunction1(this, p0);\r
25             }\r
26         } catch(ClassCastException e) {\r
27             throw new CalledWithTooManyParameters();\r
28         }\r
29     }\r
30 \r
31     @Override\r
32     public Object apply(Object p0, Object p1) {\r
33         try {\r
34             switch(arity) {\r
35             case 1: return ((Function)doApply(p0)).apply(p1);\r
36             case 2: return doApply(p0, p1);\r
37             default: return new UnsaturatedFunction2(this, p0, p1);\r
38             }\r
39         } catch(ClassCastException e) {\r
40             throw new CalledWithTooManyParameters();\r
41         }\r
42     }\r
43 \r
44     @Override\r
45     public Object apply(Object p0, Object p1, Object p2) {\r
46         try {\r
47             switch(arity) {\r
48             case 1: return ((Function)doApply(p0)).apply(p1, p2);\r
49             case 2: return ((Function)doApply(p0, p1)).apply(p2);\r
50             case 3: return doApply(p0, p1, p2);\r
51             default: return new UnsaturatedFunction3(this, p0, p1, p2);\r
52             }\r
53         } catch(ClassCastException e) {\r
54             throw new CalledWithTooManyParameters();\r
55         }\r
56     }\r
57 \r
58     @Override\r
59     public Object apply(Object p0, Object p1, Object p2, Object p3) {\r
60         try {\r
61             switch(arity) {\r
62             case 1: return ((Function)doApply(p0)).apply(p1, p2, p3);\r
63             case 2: return ((Function)doApply(p0, p1)).apply(p2, p3);\r
64             case 3: return ((Function)doApply(p0, p1, p2)).apply(p3);\r
65             case 4: return doApply(p0, p1, p2, p3);\r
66             default: return new UnsaturatedFunction4(this, p0, p1, p2, p3);\r
67             }\r
68         } catch(ClassCastException e) {\r
69             throw new CalledWithTooManyParameters();\r
70         }\r
71     }\r
72 \r
73     @Override\r
74     public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4) {\r
75         try {\r
76             switch(arity) {\r
77             case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4);\r
78             case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4);\r
79             case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4);\r
80             case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4);\r
81             case 5: return doApply(p0, p1, p2, p3, p4);\r
82             default: return new UnsaturatedFunction5(this, p0, p1, p2, p3, p4);\r
83             }\r
84         } catch(ClassCastException e) {\r
85             throw new CalledWithTooManyParameters();\r
86         }\r
87     }\r
88 \r
89     @Override\r
90     public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5) {\r
91         try {\r
92             switch(arity) {\r
93             case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5);\r
94             case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5);\r
95             case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5);\r
96             case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5);\r
97             case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5);\r
98             case 6: return doApply(p0, p1, p2, p3, p4, p5);\r
99             default: return new UnsaturatedFunction6(this, p0, p1, p2, p3, p4, p5);\r
100             }\r
101         } catch(ClassCastException e) {\r
102             throw new CalledWithTooManyParameters();\r
103         }\r
104     }\r
105 \r
106     @Override\r
107     public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6) {\r
108         try {\r
109             switch(arity) {\r
110             case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6);\r
111             case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6);\r
112             case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6);\r
113             case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6);\r
114             case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6);\r
115             case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6);\r
116             case 7: return doApply(p0, p1, p2, p3, p4, p5, p6);\r
117             default: return new UnsaturatedFunction7(this, p0, p1, p2, p3, p4, p5, p6);\r
118             }\r
119         } catch(ClassCastException e) {\r
120             throw new CalledWithTooManyParameters();\r
121         }\r
122     }\r
123 \r
124     @Override\r
125     public Object apply(Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7) {\r
126         try {\r
127             switch(arity) {\r
128             case 1: return ((Function)doApply(p0)).apply(p1, p2, p3, p4, p5, p6, p7);\r
129             case 2: return ((Function)doApply(p0, p1)).apply(p2, p3, p4, p5, p6, p7);\r
130             case 3: return ((Function)doApply(p0, p1, p2)).apply(p3, p4, p5, p6, p7);\r
131             case 4: return ((Function)doApply(p0, p1, p2, p3)).apply(p4, p5, p6, p7);\r
132             case 5: return ((Function)doApply(p0, p1, p2, p3, p4)).apply(p5, p6, p7);\r
133             case 6: return ((Function)doApply(p0, p1, p2, p3, p4, p5)).apply(p6, p7);\r
134             case 7: return ((Function)doApply(p0, p1, p2, p3, p4, p5, p6)).apply(p7);\r
135             case 8: return doApply(p0, p1, p2, p3, p4, p5, p6, p7);\r
136             default: return new UnsaturatedFunction8(this, p0, p1, p2, p3, p4, p5, p6, p7);\r
137             }\r
138         } catch(ClassCastException e) {\r
139             throw new CalledWithTooManyParameters();\r
140         }\r
141     }\r
142 \r
143     public abstract Object doApply(Object ... ps);\r
144 \r
145     @Override\r
146     public Object applyArray(Object ... ps) {\r
147         if(ps.length == arity)\r
148             return doApply(ps);\r
149         else if(ps.length < arity)\r
150             return new UnsaturatedFunctionN(this, ps);\r
151         else /* ps.length > arity */ {\r
152             try {\r
153                 return ((Function)doApply(Arrays.copyOf(ps, arity))).applyArray(Arrays.copyOfRange(ps, arity, ps.length));\r
154             } catch(ClassCastException e) {\r
155                 throw new CalledWithTooManyParameters();\r
156             }\r
157         }\r
158     }\r
159 }\r