1 package org.simantics.scl.compiler.module;
3 import java.util.Collection;
5 import java.util.function.Consumer;
7 import org.simantics.scl.compiler.constants.Constant;
8 import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
9 import org.simantics.scl.compiler.elaboration.modules.Documentation;
10 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
11 import org.simantics.scl.compiler.elaboration.modules.TypeClass;
12 import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
13 import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor;
14 import org.simantics.scl.compiler.elaboration.relations.SCLEntityType;
15 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
16 import org.simantics.scl.compiler.elaboration.rules.MappingRelation;
17 import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
18 import org.simantics.scl.compiler.environment.filter.NamespaceFilter;
19 import org.simantics.scl.compiler.errors.CompilationError;
20 import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
21 import org.simantics.scl.compiler.top.ModuleInitializer;
22 import org.simantics.scl.compiler.types.TCon;
23 import org.simantics.scl.runtime.profiling.BranchPoint;
25 import gnu.trove.map.hash.THashMap;
26 import gnu.trove.procedure.TObjectProcedure;
28 public interface Module {
30 String getDefaultLocalName();
32 SCLValue getValue(String name);
33 List<Constant> getFieldAccessors(String name);
34 SCLRelation getRelation(String name);
35 SCLEntityType getEntityType(String name);
37 TypeDescriptor getTypeDescriptor(String name);
39 EffectConstructor getEffectConstructor(String name);
40 TypeClass getTypeClass(String name);
41 Collection<TypeClassInstance> getInstances(TCon typeClass);
42 MappingRelation getMappingRelation(String name);
43 TransformationRule getRule(String name);
44 CHRRuleset getRuleset(String name);
45 Collection<TransformationRule> getRules();
47 void findValuesForPrefix(String prefix, NamespaceFilter filter, TObjectProcedure<SCLValue> proc);
48 void findValuesForPrefix(String prefix, NamespaceFilter filter, Consumer<SCLValue> consumer);
50 void findTypesForPrefix(String prefix, NamespaceFilter instance, Consumer<TCon> consumer);
52 List<ImportDeclaration> getDependencies();
53 Documentation getDocumentation();
55 byte[] getClass(String name);
56 ModuleInitializer getModuleInitializer();
58 THashMap<String, BranchPoint[]> getBranchPoints();
61 CompilationError[] getWarnings();
62 ClassLoader getParentClassLoader();
63 String getDeprecation();