]> gerrit.simantics Code Review - simantics/platform.git/blob
9872451c311e904cb72aec9bd34bad833184a240
[simantics/platform.git] /
1 package org.simantics.scl.compiler.source.repository;
2
3 import org.simantics.scl.compiler.module.Module;
4 import org.simantics.scl.compiler.module.repository.UpdateListener;
5 import org.simantics.scl.compiler.source.ModuleSource;
6 import org.simantics.scl.compiler.source.PrecompiledModuleSource;
7
8 import gnu.trove.map.hash.THashMap;
9 import gnu.trove.procedure.TObjectProcedure;
10
11 /**
12  * An implementation of {@link ModuleSourceRepository} as a finite map.
13  * This implementation does not support listening module changes,
14  * so it should not be modified after it has been taken into use.
15  * 
16  * @author Hannu Niemistö
17  */
18 public class MapModuleSourceRepository implements ModuleSourceRepository {
19     THashMap<String, ModuleSource> modules = new THashMap<String, ModuleSource>();
20     THashMap<String, String> documentations = new THashMap<String, String>();
21     
22     public MapModuleSourceRepository() {
23     }
24     
25     public MapModuleSourceRepository(ModuleSource ... descriptors) {
26         for(ModuleSource descriptor : descriptors)
27             addModuleDescriptor(descriptor);
28     }
29     
30     public MapModuleSourceRepository(Module ... modules) {
31         for(Module module : modules)
32             addModule(module);
33     }
34     
35     public void addModuleDescriptor(ModuleSource descriptor) {
36         modules.put(descriptor.getModuleName(), descriptor);
37     }
38     
39     public void addModule(Module module) {
40         addModuleDescriptor(new PrecompiledModuleSource(module));
41     }
42     
43     public void addDocumentation(String documentationName, String documentation) {
44         documentations.put(documentationName, documentation);
45     }
46
47     @Override
48     public ModuleSource getModuleSource(String moduleName,
49             UpdateListener listener) {
50         return modules.get(moduleName);
51     }
52
53     @Override
54     public void forAllModules(TObjectProcedure<String> procedure) {
55         modules.forEachKey(procedure);
56     }
57
58     @Override
59     public String getDocumentation(String documentationName) {
60         return documentations.get(documentationName);
61     }
62     
63     @Override
64     public void forAllDocumentations(TObjectProcedure<String> procedure) {
65         for(String documentationName : documentations.keySet())
66             procedure.execute(documentationName);
67     }
68     
69     @Override
70     public void checkUpdates() {
71     }
72
73     @Override
74     public void clear() {
75     }
76 }