]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/ConcreteModule.java
Merge "Improved Statement API in Simantics/DB"
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / ConcreteModule.java
index 697e64ef805e1eafc53300cb37c49c79c66b4e8e..c6210ce49dcf99498b68e09946fb02593c06c308 100644 (file)
@@ -31,11 +31,13 @@ import gnu.trove.procedure.TObjectProcedure;
 
 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, List<Constant>> fieldAccessors = new THashMap<String, List<Constant>>();
     THashMap<String, SCLRelation> relations = new THashMap<String, SCLRelation>();
     THashMap<String, SCLEntityType> entityTypes = new THashMap<String, SCLEntityType>();
     THashMap<String, TransformationRule> rules = new THashMap<String, TransformationRule>();
@@ -54,6 +56,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;
     }
@@ -96,6 +107,11 @@ public class ConcreteModule implements Module {
         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);
@@ -290,4 +306,13 @@ public class ConcreteModule implements Module {
             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);
+    }
 }