]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/TypeClassInstance.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / modules / TypeClassInstance.java
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 (executable)
index 0000000..c9bfa6f
--- /dev/null
@@ -0,0 +1,61 @@
+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