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=e52420925ea4763b332361633ad05a8565f5a44e;hp=a8b51a8be96cad3a0aa1933758e89cc4201707bf;hb=3216affb4ed0e73a5601be223638f4f1a41fb26a;hpb=7045f0f516c243563976207abcec13a68891ff1d 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 a8b51a8be..e52420925 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 @@ -5,10 +5,12 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.concurrent.SynchronousQueue; 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; @@ -31,20 +33,25 @@ 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; @@ -53,6 +60,15 @@ public class ConcreteModule implements Module { 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; } @@ -95,6 +111,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); @@ -174,6 +195,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(); } @@ -224,7 +250,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(); @@ -278,4 +304,37 @@ public class ConcreteModule implements Module { 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; + } }