X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.runtime%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fruntime%2Ffunction%2FFunctionImplN.java;fp=bundles%2Forg.simantics.scl.runtime%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fruntime%2Ffunction%2FFunctionImplN.java;h=1c9d7d9cb31a449a4622832d62d407a9735e0dd3;hp=0000000000000000000000000000000000000000;hb=969bd23cab98a79ca9101af33334000879fb60c5;hpb=866dba5cd5a3929bbeae85991796acb212338a08 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 index 000000000..1c9d7d9cb --- /dev/null +++ b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/function/FunctionImplN.java @@ -0,0 +1,159 @@ +/** + * This code is generated in org.simantics.scl.runtime.generation.GenerateFunctions. + * Do not edit manually! + */ +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(); + } + } + } +}