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;
public class ConcreteModule implements Module {
String moduleName;
+ String defaultLocalName;
THashMap<String, TypeDescriptor> typeDescriptors = new THashMap<String, TypeDescriptor>();
THashMap<String, EffectConstructor> effectConstructors = new THashMap<String, EffectConstructor>();
THashMap<String, TypeClass> typeClasses = new THashMap<String, TypeClass>();
THashMap<TCon, ArrayList<TypeClassInstance>> typeClassInstances = new THashMap<TCon, ArrayList<TypeClassInstance>>();
THashMap<String, SCLValue> values = new THashMap<String, SCLValue>();
- THashMap<String, SCLRelation> relations = new THashMap<String, SCLRelation>();
- THashMap<String, SCLEntityType> entityTypes = new THashMap<String, SCLEntityType>();
- THashMap<String, TransformationRule> rules = new THashMap<String, TransformationRule>();
- THashMap<String, MappingRelation> mappingRelations = new THashMap<String, MappingRelation>();
+ THashMap<String, List<Constant>> fieldAccessors = new THashMap<String, List<Constant>>();
+ THashMap<String, SCLRelation> relations = new THashMap<String, SCLRelation>(2);
+ THashMap<String, SCLEntityType> entityTypes = new THashMap<String, SCLEntityType>(2);
+ THashMap<String, TransformationRule> rules = new THashMap<String, TransformationRule>(2);
+ THashMap<String, MappingRelation> mappingRelations = new THashMap<String, MappingRelation>(2);
+ THashMap<String, CHRRuleset> rulesets = new THashMap<String, CHRRuleset>(2);
ArrayList<ImportDeclaration> dependencies = new ArrayList<ImportDeclaration>();
THashMap<String, BranchPoint[]> branchPoints;
CompilationError[] warnings = CompilationError.EMPTY_ARRAY;
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;
}
addValue(value);
return value;
}
+
+ @Override
+ public List<Constant> getFieldAccessors(String name) {
+ return fieldAccessors.get(name);
+ }
public void addRelation(String name, SCLRelation relation) {
relations.put(name, relation);
return effectConstructors.get(name);
}
+ @Override
+ public CHRRuleset getRuleset(String name) {
+ return rulesets.get(name);
+ }
+
public Collection<TypeClass> getTypeClasses() {
return typeClasses.values();
}
throw new NullPointerException();
this.parentClassLoader = parentClassLoader;
}
+
+ public void addFieldAccessor(String name, Constant accessor) {
+ List<Constant> list = fieldAccessors.get(name);
+ if(list == null) {
+ list = new ArrayList<Constant>(2);
+ fieldAccessors.put(name, list);
+ }
+ list.add(accessor);
+ }
+
+ public void addRuleset(String name, CHRRuleset ruleset) {
+ rulesets.put(name, ruleset);
+ }
}