]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/internal/templates/TemplateDefinitionStore.java
f0f693aa0e136ab7159e060db18e52c491a2337c
[simantics/platform.git] / bundles / org.simantics.graph.compiler / src / org / simantics / graph / compiler / internal / templates / TemplateDefinitionStore.java
1 package org.simantics.graph.compiler.internal.templates;\r
2 \r
3 import gnu.trove.map.hash.TIntIntHashMap;\r
4 import gnu.trove.map.hash.TIntObjectHashMap;\r
5 import gnu.trove.procedure.TIntObjectProcedure;\r
6 import gnu.trove.procedure.TObjectProcedure;\r
7 import gnu.trove.set.hash.TIntHashSet;\r
8 \r
9 import org.simantics.graph.store.IStore;\r
10 import org.simantics.graph.store.IndexMappingUtils;\r
11 \r
12 public class TemplateDefinitionStore implements IStore {\r
13         TIntObjectHashMap<TemplateDefinition> templateDefinitions;\r
14         TIntHashSet collisions = new TIntHashSet(); \r
15 \r
16         public TemplateDefinitionStore(TIntObjectHashMap<TemplateDefinition> templateDefinitions) {\r
17                 this.templateDefinitions = templateDefinitions;\r
18         }\r
19         \r
20         public TemplateDefinitionStore() {\r
21                 this(new TIntObjectHashMap<TemplateDefinition>());\r
22         }\r
23 \r
24         @Override\r
25         public void map(final TIntIntHashMap map) {\r
26                 templateDefinitions = IndexMappingUtils.map(map, templateDefinitions, collisions);\r
27                 templateDefinitions.forEachValue(new TObjectProcedure<TemplateDefinition>() {                   \r
28                         @Override\r
29                         public boolean execute(TemplateDefinition template) {\r
30                                 template.map(map);\r
31                                 return true;\r
32                         }\r
33                 });\r
34         }\r
35         \r
36         public void forTemplateDefinitions(TIntObjectProcedure<TemplateDefinition> proc) {\r
37                 templateDefinitions.forEachEntry(proc);\r
38         }\r
39 \r
40         public void add(int subject, TemplateDefinition templateDefinition) {\r
41                 templateDefinitions.put(subject, templateDefinition);\r
42         }\r
43 \r
44         public boolean isEmpty() {\r
45                 return templateDefinitions.isEmpty();\r
46         }\r
47         \r
48         public TIntHashSet getCollisions() {\r
49                 return collisions;\r
50         }\r
51 }\r