--- /dev/null
+package org.simantics.scl.compiler.elaboration.modules;\r
+\r
+import gnu.trove.map.hash.THashMap;\r
+\r
+import org.simantics.scl.compiler.constants.Constant;\r
+import org.simantics.scl.compiler.elaboration.errors.ElabNode;\r
+import org.simantics.scl.compiler.types.TPred;\r
+import org.simantics.scl.compiler.types.TVar;\r
+\r
+public class TypeClassInstance extends ElabNode {\r
+ public final TypeClass typeClass;\r
+ public final TPred[] context; \r
+ public final TPred instance; \r
+ public final THashMap<String, MethodImplementation> methodImplementations;\r
+ public final Constant generator;\r
+ public final TVar[] generatorParameters;\r
+ public final String javaName;\r
+ public SCLValue[] superExpressions;\r
+ \r
+ public TypeClassInstance(long loc, TypeClass typeClass,\r
+ Constant generator, \r
+ TVar[] generatorParameters, TPred[] context, TPred instance,\r
+ THashMap<String, MethodImplementation> methodImplementations,\r
+ String javaName) {\r
+ this.location = loc;\r
+ this.typeClass = typeClass;\r
+ this.generator = generator;\r
+ this.generatorParameters = generatorParameters; \r
+ this.context = context;\r
+ this.instance = instance; \r
+ this.methodImplementations = methodImplementations;\r
+ this.javaName = javaName;\r
+ }\r
+ \r
+ /*\r
+ public void toString(final StringBuilder b) {\r
+ final TypeUnparsingContext tuc = new TypeUnparsingContext();\r
+ b.append("instance (");\r
+ for(int i=0;i<context.length;++i) {\r
+ if(i>0)\r
+ b.append(", ");\r
+ context[i].toString(tuc);\r
+ b.append(context[i]);\r
+ }\r
+ b.append(") => ");\r
+ b.append(instance.toString(tuc));\r
+ b.append(" where\n");\r
+ methodImplementations.forEachEntry(new TObjectObjectProcedure<String, Name>() { \r
+ @Override\r
+ public boolean execute(String name, Name functionName) {\r
+ b.append(" ");\r
+ b.append(name);\r
+ b.append(" = ");\r
+ b.append(functionName);\r
+ b.append('\n');\r
+ return true;\r
+ }\r
+ });\r
+ }\r
+ */\r
+}\r