]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/Module.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / Module.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/Module.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/Module.java
new file mode 100644 (file)
index 0000000..beda6d5
--- /dev/null
@@ -0,0 +1,55 @@
+package org.simantics.scl.compiler.module;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Consumer;
+
+import org.simantics.scl.compiler.elaboration.modules.Documentation;
+import org.simantics.scl.compiler.elaboration.modules.SCLValue;
+import org.simantics.scl.compiler.elaboration.modules.TypeAlias;
+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.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.NamespaceFilter;
+import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
+import org.simantics.scl.compiler.top.ModuleInitializer;
+import org.simantics.scl.compiler.types.TCon;
+import org.simantics.scl.runtime.profiling.BranchPoint;
+
+import gnu.trove.map.hash.THashMap;
+import gnu.trove.procedure.TObjectProcedure;
+
+public interface Module {
+    String getName();
+    
+    SCLValue getValue(String name);
+    SCLRelation getRelation(String name);
+    SCLEntityType getEntityType(String name);
+    TypeConstructor getTypeConstructor(String name);
+    EffectConstructor getEffectConstructor(String name);
+    TypeClass getTypeClass(String name);
+    Collection<TypeClassInstance> getInstances(TCon typeClass);
+    TypeAlias getTypeAlias(String name);
+    MappingRelation getMappingRelation(String name);
+    TransformationRule getRule(String name);
+    Collection<TransformationRule> getRules();
+    
+    void findValuesForPrefix(String prefix, NamespaceFilter filter, TObjectProcedure<SCLValue> proc);
+    void findValuesForPrefix(String prefix, NamespaceFilter filter, Consumer<SCLValue> consumer);
+    
+    void findTypesForPrefix(String prefix, NamespaceFilter instance, Consumer<TCon> consumer);
+    
+    List<ImportDeclaration> getDependencies();
+    Documentation getDocumentation();
+    
+    byte[] getClass(String name);
+    ModuleInitializer getModuleInitializer();
+
+    THashMap<String, BranchPoint[]> getBranchPoints();
+    void dispose();
+    
+}