X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fmodule%2FConcreteModule.java;h=8a83e5f35644631bdc58c568dd70c275a264109d;hp=2f6d52bdba63298ad51c6de3e4f2c8fe3c5b6b89;hb=f238db98a6075e59973c5c391a1946eb7972c7a5;hpb=ca40974f87c9db00eb77aaf1acc1e9937b37261b diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/ConcreteModule.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/ConcreteModule.java index 2f6d52bdb..8a83e5f35 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/ConcreteModule.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/ConcreteModule.java @@ -9,6 +9,7 @@ import java.util.function.Consumer; import org.simantics.scl.compiler.common.names.Name; 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; @@ -19,7 +20,9 @@ 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.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; @@ -30,27 +33,44 @@ import gnu.trove.procedure.TObjectProcedure; public class ConcreteModule implements Module { String moduleName; + String defaultLocalName; + String deprecation; THashMap typeDescriptors = new THashMap(); THashMap effectConstructors = new THashMap(); THashMap typeClasses = new THashMap(); THashMap> typeClassInstances = new THashMap>(); THashMap values = new THashMap(); - THashMap relations = new THashMap(); - THashMap entityTypes = new THashMap(); - THashMap rules = new THashMap(); - THashMap mappingRelations = new THashMap(); + THashMap> fieldAccessors = new THashMap>(); + THashMap relations = new THashMap(2); + THashMap entityTypes = new THashMap(2); + THashMap rules = new THashMap(2); + THashMap mappingRelations = new THashMap(2); + THashMap rulesets = new THashMap(2); ArrayList dependencies = new ArrayList(); THashMap branchPoints; - + CompilationError[] warnings = CompilationError.EMPTY_ARRAY; + Map classes = Collections.emptyMap(); + ClassLoader parentClassLoader; ModuleInitializer moduleInitializer; protected Documentation documentation; + + public ModuleDebugInfo moduleDebugInfo; public ConcreteModule(String moduleName) { this.moduleName = moduleName; } + @Override + public String getDefaultLocalName() { + return defaultLocalName; + } + + public void setDefaultLocalName(String defaultLocalName) { + this.defaultLocalName = defaultLocalName; + } + public boolean addTypeDescriptor(String name, TypeDescriptor typeConstructor) { return typeDescriptors.put(name, typeConstructor) != null; } @@ -93,6 +113,11 @@ public class ConcreteModule implements Module { addValue(value); return value; } + + @Override + public List getFieldAccessors(String name) { + return fieldAccessors.get(name); + } public void addRelation(String name, SCLRelation relation) { relations.put(name, relation); @@ -172,6 +197,11 @@ public class ConcreteModule implements Module { return effectConstructors.get(name); } + @Override + public CHRRuleset getRuleset(String name) { + return rulesets.get(name); + } + public Collection getTypeClasses() { return typeClasses.values(); } @@ -222,7 +252,7 @@ public class ConcreteModule implements Module { this.values.forEachEntry(new TObjectObjectProcedure() { @Override public boolean execute(String name, SCLValue value) { - if(value.isPrivate()) + if(value.isPrivateOrDerived()) return true; String lowerPrefix = prefix.toLowerCase(); String lowerName = name.toLowerCase(); @@ -242,6 +272,11 @@ public class ConcreteModule implements Module { consumer.accept(value); }); } + + @Override + public List getValueNames() { + return new ArrayList(values.keySet()); + } public Collection getRelations() { return relations.values(); @@ -267,6 +302,51 @@ public class ConcreteModule implements Module { @Override public void dispose() { - + } + + public void setWarnings(CompilationError[] warnings) { + this.warnings = warnings; + } + + public CompilationError[] getWarnings() { + return warnings; + } + + @Override + public ClassLoader getParentClassLoader() { + return parentClassLoader; + } + + public void setParentClassLoader(ClassLoader parentClassLoader) { + if(parentClassLoader == null) + throw new NullPointerException(); + this.parentClassLoader = parentClassLoader; + } + + public void addFieldAccessor(String name, Constant accessor) { + List list = fieldAccessors.get(name); + if(list == null) { + list = new ArrayList(2); + fieldAccessors.put(name, list); + } + list.add(accessor); + } + + public void addRuleset(String name, CHRRuleset ruleset) { + rulesets.put(name, ruleset); + } + + @Override + public String getDeprecation() { + return deprecation; + } + + public void setDeprecation(String deprecation) { + this.deprecation = deprecation; + } + + @Override + public ModuleDebugInfo getModuleDebugInfo() { + return moduleDebugInfo; } }