]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/LazyModule.java
41aff8d3122813cf153cdd43e36e5dea197ccd36
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / LazyModule.java
1 package org.simantics.scl.compiler.module;
2
3 import java.util.Collection;
4 import java.util.Collections;
5 import java.util.List;
6 import java.util.concurrent.ConcurrentHashMap;
7
8 import org.simantics.scl.compiler.constants.Constant;
9 import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
10 import org.simantics.scl.compiler.elaboration.modules.Documentation;
11 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
12 import org.simantics.scl.compiler.elaboration.modules.TypeClass;
13 import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
14 import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor;
15 import org.simantics.scl.compiler.elaboration.relations.SCLEntityType;
16 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
17 import org.simantics.scl.compiler.elaboration.rules.MappingRelation;
18 import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
19 import org.simantics.scl.compiler.errors.CompilationError;
20 import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
21 import org.simantics.scl.compiler.top.ModuleInitializer;
22 import org.simantics.scl.compiler.types.TCon;
23 import org.simantics.scl.runtime.profiling.BranchPoint;
24
25 import gnu.trove.map.hash.THashMap;
26
27 public abstract class LazyModule implements Module {
28
29     private final String moduleName;
30     private final ConcurrentHashMap<String, SCLValue> values = new ConcurrentHashMap<String, SCLValue>();
31     private final ConcurrentHashMap<String, SCLRelation> relations = new ConcurrentHashMap<String, SCLRelation>();
32     private final ConcurrentHashMap<String, SCLEntityType> entityTypes = new ConcurrentHashMap<String, SCLEntityType>();
33     
34     protected abstract SCLValue createValue(String name);
35     
36     protected SCLRelation createRelation(String name) {
37         return null;
38     }
39     
40     protected SCLEntityType createEntityType(String name) {
41         return null;
42     }
43     
44     @Override
45     public MappingRelation getMappingRelation(String name) {
46         return null;
47     }
48     
49     @Override
50     public TransformationRule getRule(String name) {
51         return null;
52     }
53     
54     public LazyModule(String moduleName) {
55         this.moduleName = moduleName;
56     }
57         
58     @Override
59     public String getName() {
60         return moduleName;
61     }
62     
63     public void findValuesForPrefix(final Collection<SCLValue> values, final String prefix) {           
64     }
65
66     @Override
67     public SCLValue getValue(String name) {
68         if(values.containsKey(name))
69             return values.get(name);
70         else {
71             SCLValue value = createValue(name);
72             values.put(name, value);
73             return value;
74         }
75     }
76     
77     @Override
78     public List<Constant> getFieldAccessors(String name) {
79         return null;
80     }
81     
82     public SCLRelation getRelation(String name) {
83         if(relations.containsKey(name))
84             return relations.get(name);
85         else {
86             SCLRelation relation = createRelation(name);
87             relations.put(name, relation);
88             return relation;
89         }
90     }
91     
92     public SCLEntityType getEntityType(String name) {
93         if(entityTypes.containsKey(name))
94             return entityTypes.get(name);
95         else {
96             SCLEntityType entityType = createEntityType(name);
97             entityTypes.put(name, entityType);
98             return entityType;
99         }
100     } 
101
102     @Override
103     public TypeClass getTypeClass(String name) {
104         return null;
105     }
106    
107     @Override
108     public Collection<TypeClassInstance> getInstances(TCon typeClass) {
109         return Collections.emptyList();
110     }
111
112     @Override
113     public TypeDescriptor getTypeDescriptor(String name) {
114         return null;
115     }
116
117     @Override
118     public Documentation getDocumentation() {
119         return null;
120     }
121     
122     @Override
123     public byte[] getClass(String name) {
124         return null;
125     }
126     
127     @Override
128     public ModuleInitializer getModuleInitializer() {
129         return null;
130     }
131     
132     @Override
133     public EffectConstructor getEffectConstructor(String name) {
134         return null;
135     }
136     
137     @Override
138     public Collection<TransformationRule> getRules() {
139         return Collections.emptyList();
140     }
141     
142     @Override
143     public THashMap<String, BranchPoint[]> getBranchPoints() {
144         return null;
145     }
146     
147     @Override
148     public CompilationError[] getWarnings() {
149         return CompilationError.EMPTY_ARRAY;
150     }
151     
152     @Override
153     public CHRRuleset getRuleset(String name) {
154         return null;
155     }
156     
157     @Override
158     public String getDeprecation() {
159         return null;
160     }
161 }