X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fmodule%2FLazyModule.java;h=ce3b7cc5fd22ff49fd4b2a01c5205d3647c2f82e;hb=6b5407291ca7033f7b9eeb8434a58884d61041de;hp=a5399e88f1f642c2212ee7004b8d60f8757df441;hpb=9a175feb652b2b7bba7afa540831b9076be3c10e;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/LazyModule.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/LazyModule.java index a5399e88f..ce3b7cc5f 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/LazyModule.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/LazyModule.java @@ -2,17 +2,22 @@ package org.simantics.scl.compiler.module; import java.util.Collection; import java.util.Collections; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +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.TypeAlias; import org.simantics.scl.compiler.elaboration.modules.TypeClass; import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance; -import org.simantics.scl.compiler.elaboration.modules.TypeConstructor; +import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor; import org.simantics.scl.compiler.elaboration.relations.SCLEntityType; import org.simantics.scl.compiler.elaboration.relations.SCLRelation; import org.simantics.scl.compiler.elaboration.rules.MappingRelation; import org.simantics.scl.compiler.elaboration.rules.TransformationRule; +import org.simantics.scl.compiler.errors.CompilationError; import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor; import org.simantics.scl.compiler.top.ModuleInitializer; import org.simantics.scl.compiler.types.TCon; @@ -22,10 +27,10 @@ import gnu.trove.map.hash.THashMap; public abstract class LazyModule implements Module { - String moduleName; - private THashMap values = new THashMap(); - private THashMap relations = new THashMap(); - private THashMap entityTypes = new THashMap(); + private final String moduleName; + private final ConcurrentHashMap values = new ConcurrentHashMap(); + private final ConcurrentHashMap relations = new ConcurrentHashMap(); + private final ConcurrentHashMap entityTypes = new ConcurrentHashMap(); protected abstract SCLValue createValue(String name); @@ -59,35 +64,28 @@ public abstract class LazyModule implements Module { public void findValuesForPrefix(final Collection values, final String prefix) { } + private final Function createValue = this::createValue; + @Override public SCLValue getValue(String name) { - if(values.containsKey(name)) - return values.get(name); - else { - SCLValue value = createValue(name); - values.put(name, value); - return value; - } + return values.computeIfAbsent(name, createValue); + } + + @Override + public List getFieldAccessors(String name) { + return null; } + private final Function createRelation = this::createRelation; + public SCLRelation getRelation(String name) { - if(relations.containsKey(name)) - return relations.get(name); - else { - SCLRelation relation = createRelation(name); - relations.put(name, relation); - return relation; - } + return relations.computeIfAbsent(name, createRelation); } + private final Function createEntityType = this::createEntityType; + public SCLEntityType getEntityType(String name) { - if(entityTypes.containsKey(name)) - return entityTypes.get(name); - else { - SCLEntityType entityType = createEntityType(name); - entityTypes.put(name, entityType); - return entityType; - } + return entityTypes.computeIfAbsent(name, createEntityType); } @Override @@ -101,7 +99,7 @@ public abstract class LazyModule implements Module { } @Override - public TypeConstructor getTypeConstructor(String name) { + public TypeDescriptor getTypeDescriptor(String name) { return null; } @@ -126,17 +124,27 @@ public abstract class LazyModule implements Module { } @Override - public TypeAlias getTypeAlias(String name) { + public Collection getRules() { + return Collections.emptyList(); + } + + @Override + public THashMap getBranchPoints() { return null; } @Override - public Collection getRules() { - return Collections.emptyList(); + public CompilationError[] getWarnings() { + return CompilationError.EMPTY_ARRAY; } @Override - public THashMap getBranchPoints() { + public CHRRuleset getRuleset(String name) { + return null; + } + + @Override + public String getDeprecation() { return null; } }