1 package org.simantics.scl.compiler.environment;
5 import org.simantics.scl.compiler.environment.NamespaceImpl.ModuleImport;
7 import gnu.trove.map.hash.THashMap;
9 public class NamespaceSpec {
10 public final THashMap<String, NamespaceSpec> namespaceMap = new THashMap<String, NamespaceSpec>();
11 public final THashMap<String, ModuleImport> moduleMap = new THashMap<String, ModuleImport>();
13 public Namespace toNamespace() {
14 THashMap<String, Namespace> namespaceImplMap = new THashMap<String, Namespace>(namespaceMap.size());
15 for(Map.Entry<String, NamespaceSpec> entry : namespaceMap.entrySet())
16 namespaceImplMap.put(entry.getKey(), entry.getValue().toNamespace());
18 return new NamespaceImpl(namespaceImplMap, moduleMap.values().toArray(new ModuleImport[moduleMap.size()]));
21 public NamespaceSpec getNamespace(String name) {
22 NamespaceSpec result = namespaceMap.get(name);
24 result = new NamespaceSpec();
25 namespaceMap.put(name, result);
31 public String toString() {
32 StringBuilder b = new StringBuilder();
37 private void toString(StringBuilder b) {
40 for(String name : moduleMap.keySet()) {
49 for(Map.Entry<String, NamespaceSpec> entry : namespaceMap.entrySet()) {
54 b.append(entry.getKey());
56 entry.getValue().toString(b);