]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DocumentationGeneration.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / compilation / DocumentationGeneration.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DocumentationGeneration.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DocumentationGeneration.java
new file mode 100644 (file)
index 0000000..e4124d9
--- /dev/null
@@ -0,0 +1,57 @@
+package org.simantics.scl.compiler.compilation;
+
+import gnu.trove.map.hash.THashMap;
+import gnu.trove.set.hash.THashSet;
+
+import java.util.ArrayList;
+
+import org.simantics.scl.compiler.elaboration.modules.SCLValue;
+import org.simantics.scl.compiler.elaboration.modules.TypeClass;
+import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
+import org.simantics.scl.compiler.elaboration.modules.TypeConstructor;
+import org.simantics.scl.compiler.internal.parsing.declarations.DDocumentationAst;
+import org.simantics.scl.compiler.module.ConcreteModule;
+import org.simantics.scl.compiler.types.TCon;
+
+public class DocumentationGeneration {
+    THashMap<String, DDocumentationAst> valueDocumentation;
+    THashMap<String, DDocumentationAst> typeDocumentation;
+    THashMap<String, DDocumentationAst> classDocumentation;
+    ConcreteModule module;
+
+    THashSet<String> mentionedInDocumentation = new THashSet<String>();    
+    THashMap<TCon, ArrayList<TypeClassInstance>> dataToInstance =
+            new THashMap<TCon, ArrayList<TypeClassInstance>>(); 
+    
+    public DocumentationGeneration(/*StringBuilder moduleDocumentation,*/
+            THashMap<String, DDocumentationAst> valueDocumentation,
+            THashMap<String, DDocumentationAst> typeDocumentation,
+            THashMap<String, DDocumentationAst> classDocumentation,
+            ConcreteModule module) {
+        this.valueDocumentation = valueDocumentation;
+        this.typeDocumentation = typeDocumentation;
+        this.classDocumentation = classDocumentation;
+        this.module = module;
+    }
+    
+    public void generateDocumentation() {
+        for(String name : classDocumentation.keySet()) {
+            TypeClass typeClass = module.getTypeClass(name);
+            DDocumentationAst doc = classDocumentation.get(name);
+            if(typeClass != null && doc != null)
+                typeClass.setDocumentation(doc.documentation);
+        }
+        for(String name : valueDocumentation.keySet()) {
+            SCLValue value = module.getValue(name);
+            DDocumentationAst doc = valueDocumentation.get(name);
+            if(value != null && doc != null)
+                value.setDocumentation(doc.documentation);
+        }
+        for(String name : typeDocumentation.keySet()) {
+            TypeConstructor typeConstructor = module.getTypeConstructor(name);
+            DDocumentationAst doc = typeDocumentation.get(name);
+            if(typeConstructor != null && doc != null)
+                typeConstructor.setDocumentation(doc.documentation);
+        }
+    }
+}