]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/DelegateConstant.java
(refs #7250) Merging master, minor CHR bugfixes
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / constants / DelegateConstant.java
1 package org.simantics.scl.compiler.constants;
2
3 import org.objectweb.asm.Label;
4 import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
5 import org.simantics.scl.compiler.internal.codegen.references.IVal;
6 import org.simantics.scl.compiler.internal.codegen.references.Val;
7 import org.simantics.scl.compiler.internal.codegen.ssa.statements.LetApply;
8 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
9 import org.simantics.scl.compiler.internal.codegen.utils.SSASimplificationContext;
10 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
11 import org.simantics.scl.compiler.types.Type;
12
13 public abstract class DelegateConstant extends Constant {
14
15     Constant base;
16     
17     public DelegateConstant(Type type) {
18         super(type);
19     }
20     
21     public DelegateConstant(Type type, Constant base) {
22         super(type);
23         this.base = base;
24     }
25     
26     public DelegateConstant(Constant base) {
27         super(base.getType());
28         this.base = base;
29     }
30
31     public void setBase(Constant base) {
32         this.base = base;
33     }
34     
35     @Override
36     public void push(MethodBuilder mb) {
37         base.push(mb);
38     }
39     
40     @Override
41     public Type apply(MethodBuilder mb, Type[] typeParameters,
42             Val... parameters) {
43         return base.apply(mb, typeParameters, parameters);
44     }
45     
46     @Override
47     public void deconstruct(MethodBuilder mb, IVal parameter, Cont success,
48             Label failure) {
49         base.deconstruct(mb, parameter, success, failure);
50     }
51     
52     @Override
53     public int constructorTag() {
54         return base.constructorTag();
55     }
56     
57     @Override
58     public int getArity() {
59         return base.getArity();
60     }
61     
62     @Override
63     public void inline(SSASimplificationContext context, LetApply apply) {
64         base.inline(context, apply);
65     }
66     
67     @Override
68     public Object realizeValue(TransientClassBuilder classLoader) {
69         return base.realizeValue(classLoader);
70     }
71 }