]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/TypeClassInstance.java
(refs #7250) Merging master, minor CHR bugfixes
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / modules / TypeClassInstance.java
1 package org.simantics.scl.compiler.elaboration.modules;
2
3 import org.simantics.scl.compiler.constants.Constant;
4 import org.simantics.scl.compiler.elaboration.errors.ElabNode;
5 import org.simantics.scl.compiler.types.TPred;
6 import org.simantics.scl.compiler.types.TVar;
7
8 import gnu.trove.map.hash.THashMap;
9
10 public class TypeClassInstance extends ElabNode {
11     public final TypeClass typeClass;
12     public final TPred[] context;    
13     public final TPred instance;  
14     public final THashMap<String, MethodImplementation> methodImplementations;
15     public final Constant generator;
16     public final TVar[] generatorParameters;
17     public final String javaName;
18     public SCLValue[] superExpressions;
19         
20     public TypeClassInstance(long loc, TypeClass typeClass,
21             Constant generator, 
22             TVar[] generatorParameters, TPred[] context, TPred instance,
23             THashMap<String, MethodImplementation> methodImplementations,
24             String javaName) {
25         this.location = loc;
26         this.typeClass = typeClass;
27         this.generator = generator;
28         this.generatorParameters = generatorParameters;                
29         this.context = context;
30         this.instance = instance;        
31         this.methodImplementations = methodImplementations;
32         this.javaName = javaName;
33     }
34     
35     /*
36     public void toString(final StringBuilder b) {
37         final TypeUnparsingContext tuc = new TypeUnparsingContext();
38         b.append("instance (");
39         for(int i=0;i<context.length;++i) {
40             if(i>0)
41                 b.append(", ");
42             context[i].toString(tuc);
43             b.append(context[i]);
44         }
45         b.append(") => ");
46         b.append(instance.toString(tuc));
47         b.append(" where\n");
48         methodImplementations.forEachEntry(new TObjectObjectProcedure<String, Name>() {            
49             @Override
50             public boolean execute(String name, Name functionName) {
51                 b.append("    ");
52                 b.append(name);
53                 b.append(" = ");
54                 b.append(functionName);
55                 b.append('\n');
56                 return true;
57             }
58         });
59     }
60     */
61 }