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