1 package org.simantics.graph.compiler.internal.templates;
\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
9 import org.simantics.graph.store.IStore;
\r
10 import org.simantics.graph.store.IndexMappingUtils;
\r
12 public class TemplateDefinitionStore implements IStore {
\r
13 TIntObjectHashMap<TemplateDefinition> templateDefinitions;
\r
14 TIntHashSet collisions = new TIntHashSet();
\r
16 public TemplateDefinitionStore(TIntObjectHashMap<TemplateDefinition> templateDefinitions) {
\r
17 this.templateDefinitions = templateDefinitions;
\r
20 public TemplateDefinitionStore() {
\r
21 this(new TIntObjectHashMap<TemplateDefinition>());
\r
25 public void map(final TIntIntHashMap map) {
\r
26 templateDefinitions = IndexMappingUtils.map(map, templateDefinitions, collisions);
\r
27 templateDefinitions.forEachValue(new TObjectProcedure<TemplateDefinition>() {
\r
29 public boolean execute(TemplateDefinition template) {
\r
36 public void forTemplateDefinitions(TIntObjectProcedure<TemplateDefinition> proc) {
\r
37 templateDefinitions.forEachEntry(proc);
\r
40 public void add(int subject, TemplateDefinition templateDefinition) {
\r
41 templateDefinitions.put(subject, templateDefinition);
\r
44 public boolean isEmpty() {
\r
45 return templateDefinitions.isEmpty();
\r
48 public TIntHashSet getCollisions() {
\r