]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/Module.java
Collect reference hierarchy for SCL values
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / Module.java
index 6f13ed426940e11a2d59e949a670c1cedb7a7d6f..0ea33cb463f2de07a56c5ece742187cfa43b7c1c 100644 (file)
@@ -1,9 +1,12 @@
 package org.simantics.scl.compiler.module;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.function.Consumer;
 
+import org.simantics.scl.compiler.constants.Constant;
+import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
 import org.simantics.scl.compiler.elaboration.modules.Documentation;
 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
 import org.simantics.scl.compiler.elaboration.modules.TypeClass;
@@ -13,9 +16,11 @@ import org.simantics.scl.compiler.elaboration.relations.SCLEntityType;
 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
 import org.simantics.scl.compiler.elaboration.rules.MappingRelation;
 import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
+import org.simantics.scl.compiler.environment.filter.AcceptAllNamespaceFilter;
 import org.simantics.scl.compiler.environment.filter.NamespaceFilter;
 import org.simantics.scl.compiler.errors.CompilationError;
 import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
+import org.simantics.scl.compiler.module.debug.ModuleDebugInfo;
 import org.simantics.scl.compiler.top.ModuleInitializer;
 import org.simantics.scl.compiler.types.TCon;
 import org.simantics.scl.runtime.profiling.BranchPoint;
@@ -25,8 +30,17 @@ import gnu.trove.procedure.TObjectProcedure;
 
 public interface Module {
     String getName();
+    String getDefaultLocalName();
     
     SCLValue getValue(String name);
+    default List<String> getValueNames() {
+        ArrayList<String> valueNames = new ArrayList<String>();
+        findValuesForPrefix("", AcceptAllNamespaceFilter.INSTANCE, value -> {
+            valueNames.add(value.getName().name);
+        });
+        return valueNames;
+    }
+    List<Constant> getFieldAccessors(String name);
     SCLRelation getRelation(String name);
     SCLEntityType getEntityType(String name);
     
@@ -37,6 +51,7 @@ public interface Module {
     Collection<TypeClassInstance> getInstances(TCon typeClass);
     MappingRelation getMappingRelation(String name);
     TransformationRule getRule(String name);
+    CHRRuleset getRuleset(String name);
     Collection<TransformationRule> getRules();
     
     void findValuesForPrefix(String prefix, NamespaceFilter filter, TObjectProcedure<SCLValue> proc);
@@ -55,4 +70,12 @@ public interface Module {
 
     CompilationError[] getWarnings();
     ClassLoader getParentClassLoader();
+    String getDeprecation();
+    
+    /**
+     * May return null, if there is no debug info.
+     */
+    default ModuleDebugInfo getModuleDebugInfo() {
+        return null;
+    }
 }