X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fmodule%2FConcreteModule.java;h=73311e99ab9ab4a17f087d1f215b15de89286929;hb=78f577368ba4c71ad6fb3d9f16c03c634585cf7b;hp=55ee202f7d78d9b56f189bee8df90d96920f03b7;hpb=c3945d04f5f0cff02b6d33d92d78325f53f121fa;p=simantics%2Fplatform.git 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 55ee202f7..73311e99a 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; @@ -37,10 +38,12 @@ public class ConcreteModule implements Module { 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; @@ -106,6 +109,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); @@ -185,6 +193,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(); } @@ -300,4 +313,17 @@ public class ConcreteModule implements Module { 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); + } }