]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/Module.java
Merge "Improved Statement API in Simantics/DB"
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / Module.java
1 package org.simantics.scl.compiler.module;
2
3 import java.util.Collection;
4 import java.util.List;
5 import java.util.function.Consumer;
6
7 import org.simantics.scl.compiler.constants.Constant;
8 import org.simantics.scl.compiler.elaboration.modules.Documentation;
9 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
10 import org.simantics.scl.compiler.elaboration.modules.TypeClass;
11 import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
12 import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor;
13 import org.simantics.scl.compiler.elaboration.relations.SCLEntityType;
14 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
15 import org.simantics.scl.compiler.elaboration.rules.MappingRelation;
16 import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
17 import org.simantics.scl.compiler.environment.filter.NamespaceFilter;
18 import org.simantics.scl.compiler.errors.CompilationError;
19 import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
20 import org.simantics.scl.compiler.top.ModuleInitializer;
21 import org.simantics.scl.compiler.types.TCon;
22 import org.simantics.scl.runtime.profiling.BranchPoint;
23
24 import gnu.trove.map.hash.THashMap;
25 import gnu.trove.procedure.TObjectProcedure;
26
27 public interface Module {
28     String getName();
29     String getDefaultLocalName();
30     
31     SCLValue getValue(String name);
32     List<Constant> getFieldAccessors(String name);
33     SCLRelation getRelation(String name);
34     SCLEntityType getEntityType(String name);
35     
36     TypeDescriptor getTypeDescriptor(String name);
37     
38     EffectConstructor getEffectConstructor(String name);
39     TypeClass getTypeClass(String name);
40     Collection<TypeClassInstance> getInstances(TCon typeClass);
41     MappingRelation getMappingRelation(String name);
42     TransformationRule getRule(String name);
43     Collection<TransformationRule> getRules();
44     
45     void findValuesForPrefix(String prefix, NamespaceFilter filter, TObjectProcedure<SCLValue> proc);
46     void findValuesForPrefix(String prefix, NamespaceFilter filter, Consumer<SCLValue> consumer);
47     
48     void findTypesForPrefix(String prefix, NamespaceFilter instance, Consumer<TCon> consumer);
49     
50     List<ImportDeclaration> getDependencies();
51     Documentation getDocumentation();
52     
53     byte[] getClass(String name);
54     ModuleInitializer getModuleInitializer();
55
56     THashMap<String, BranchPoint[]> getBranchPoints();
57     void dispose();
58
59     CompilationError[] getWarnings();
60     ClassLoader getParentClassLoader();
61 }