X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fmodules%2FTypeClassInstance.java;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fmodules%2FTypeClassInstance.java;h=c9bfa6fdefe6be4a41237baf28b580ae47a2413d;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/TypeClassInstance.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/TypeClassInstance.java new file mode 100755 index 000000000..c9bfa6fde --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/TypeClassInstance.java @@ -0,0 +1,61 @@ +package org.simantics.scl.compiler.elaboration.modules; + +import gnu.trove.map.hash.THashMap; + +import org.simantics.scl.compiler.constants.Constant; +import org.simantics.scl.compiler.elaboration.errors.ElabNode; +import org.simantics.scl.compiler.types.TPred; +import org.simantics.scl.compiler.types.TVar; + +public class TypeClassInstance extends ElabNode { + public final TypeClass typeClass; + public final TPred[] context; + public final TPred instance; + public final THashMap methodImplementations; + public final Constant generator; + public final TVar[] generatorParameters; + public final String javaName; + public SCLValue[] superExpressions; + + public TypeClassInstance(long loc, TypeClass typeClass, + Constant generator, + TVar[] generatorParameters, TPred[] context, TPred instance, + THashMap methodImplementations, + String javaName) { + this.location = loc; + this.typeClass = typeClass; + this.generator = generator; + this.generatorParameters = generatorParameters; + this.context = context; + this.instance = instance; + this.methodImplementations = methodImplementations; + this.javaName = javaName; + } + + /* + public void toString(final StringBuilder b) { + final TypeUnparsingContext tuc = new TypeUnparsingContext(); + b.append("instance ("); + for(int i=0;i0) + b.append(", "); + context[i].toString(tuc); + b.append(context[i]); + } + b.append(") => "); + b.append(instance.toString(tuc)); + b.append(" where\n"); + methodImplementations.forEachEntry(new TObjectObjectProcedure() { + @Override + public boolean execute(String name, Name functionName) { + b.append(" "); + b.append(name); + b.append(" = "); + b.append(functionName); + b.append('\n'); + return true; + } + }); + } + */ +}