]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/internal/templates/GraphTemplate.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.graph.compiler / src / org / simantics / graph / compiler / internal / templates / GraphTemplate.java
index abf1a768860d31cdba64004d3feb128f8216f144..0b3b921795029aa2e174969407c1d69d91bc9c46 100644 (file)
-package org.simantics.graph.compiler.internal.templates;\r
-\r
-import gnu.trove.map.hash.TIntIntHashMap;\r
-import gnu.trove.map.hash.TObjectIntHashMap;\r
-\r
-import java.util.Arrays;\r
-import java.util.Collection;\r
-\r
-import org.simantics.graph.compiler.ExternalFileLoader;\r
-import org.simantics.graph.compiler.internal.store.LocationStore;\r
-import org.simantics.graph.query.IGraph;\r
-import org.simantics.graph.representation.External;\r
-import org.simantics.graph.representation.Identity;\r
-import org.simantics.graph.representation.Root;\r
-import org.simantics.graph.representation.TransferableGraph1;\r
-import org.simantics.graph.representation.Value;\r
-import org.simantics.graph.store.GraphStore;\r
-import org.simantics.graph.store.IdentityStore;\r
-import org.simantics.graph.store.StatementStore;\r
-import org.simantics.graph.store.ValueStore;\r
-import org.simantics.ltk.Location;\r
-import org.simantics.ltk.Problem;\r
-\r
-public class GraphTemplate implements ITemplate {\r
-       int[] prototypeResources;\r
-       int[] parameterMapping;\r
-       int[] statements;\r
-       Value[] values;\r
-       \r
-       public GraphTemplate(GraphStore store, String[] parameters, TransferableGraph1 tg) {\r
-               prototypeResources = new int[tg.resourceCount];\r
-               Arrays.fill(prototypeResources, -1);\r
-               \r
-               this.values = tg.values;\r
-               this.statements = tg.statements;\r
-               this.parameterMapping = new int[parameters.length];\r
-               TObjectIntHashMap<String> pmap = new TObjectIntHashMap<String>();\r
-               for(int i=0;i<parameters.length;++i)\r
-                       pmap.put(parameters[i], i);\r
-               \r
-               for(Identity id : tg.identities) {\r
-                       if(id.definition instanceof Root) {\r
-                               Root def = (Root)id.definition;\r
-                               if(pmap.containsKey(def.name))\r
-                                       parameterMapping[pmap.get(def.name)] = id.resource;\r
-                               else\r
-                                       prototypeResources[id.resource] = store.identities.getRoot(def.name);\r
-                       }\r
-                       else if(id.definition instanceof External) {\r
-                               External def = (External)id.definition;\r
-                               prototypeResources[id.resource] =\r
-                                       store.identities.getChild(\r
-                                                       prototypeResources[def.parent], \r
-                                                       def.name);\r
-                       }\r
-                       else\r
-                               throw new RuntimeException("Invalid template");\r
-               }\r
-       }\r
-       \r
-       @Override\r
-       public void apply(IGraph graph, GraphStore store, int[] parameters, ExternalFileLoader fileLoader, Collection<Problem> problems) {\r
-               if(parameters.length != parameterMapping.length) {\r
-                       Location location = store.getStore(LocationStore.class)\r
-                               .getLocation(parameters[0]);\r
-                       problems.add(new Problem(location, "A template applied with wrong number of parameters."));\r
-                       return;\r
-               }\r
-               int[] resources = Arrays.copyOf(prototypeResources, prototypeResources.length);\r
-               for(int i=0;i<parameterMapping.length;++i)\r
-                       resources[parameterMapping[i]] = parameters[i];\r
-               \r
-               IdentityStore identities = store.identities;\r
-               for(int i=0;i<resources.length;++i)\r
-                       if(resources[i] < 0)\r
-                               resources[i] = identities.newResource();\r
-               \r
-               StatementStore statementStore = store.statements;\r
-               for(int i=0;i<statements.length;i+=4) {\r
-                       statementStore.add(\r
-                                       resources[statements[i]],\r
-                                       resources[statements[i+1]],\r
-                                       resources[statements[i+3]]\r
-                       );\r
-               }\r
-               \r
-               ValueStore valueStore = store.values;\r
-               for(Value value : values) {\r
-                       valueStore.setValue(resources[value.resource], value.value);\r
-               }\r
-       }\r
-\r
-       public void map(TIntIntHashMap map) {\r
-               for(int i=0;i<prototypeResources.length;++i) {\r
-                       int temp = prototypeResources[i];\r
-                       if(temp >= 0 && map.contains(temp))\r
-                               prototypeResources[i] = map.get(temp);\r
-               }\r
-       }       \r
-}\r
+package org.simantics.graph.compiler.internal.templates;
+
+import gnu.trove.map.hash.TIntIntHashMap;
+import gnu.trove.map.hash.TObjectIntHashMap;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.simantics.graph.compiler.ExternalFileLoader;
+import org.simantics.graph.compiler.internal.store.LocationStore;
+import org.simantics.graph.query.IGraph;
+import org.simantics.graph.representation.External;
+import org.simantics.graph.representation.Identity;
+import org.simantics.graph.representation.Root;
+import org.simantics.graph.representation.TransferableGraph1;
+import org.simantics.graph.representation.Value;
+import org.simantics.graph.store.GraphStore;
+import org.simantics.graph.store.IdentityStore;
+import org.simantics.graph.store.StatementStore;
+import org.simantics.graph.store.ValueStore;
+import org.simantics.ltk.Location;
+import org.simantics.ltk.Problem;
+
+public class GraphTemplate implements ITemplate {
+       int[] prototypeResources;
+       int[] parameterMapping;
+       int[] statements;
+       Value[] values;
+       
+       public GraphTemplate(GraphStore store, String[] parameters, TransferableGraph1 tg) {
+               prototypeResources = new int[tg.resourceCount];
+               Arrays.fill(prototypeResources, -1);
+               
+               this.values = tg.values;
+               this.statements = tg.statements;
+               this.parameterMapping = new int[parameters.length];
+               TObjectIntHashMap<String> pmap = new TObjectIntHashMap<String>();
+               for(int i=0;i<parameters.length;++i)
+                       pmap.put(parameters[i], i);
+               
+               for(Identity id : tg.identities) {
+                       if(id.definition instanceof Root) {
+                               Root def = (Root)id.definition;
+                               if(pmap.containsKey(def.name))
+                                       parameterMapping[pmap.get(def.name)] = id.resource;
+                               else
+                                       prototypeResources[id.resource] = store.identities.getRoot(def.name);
+                       }
+                       else if(id.definition instanceof External) {
+                               External def = (External)id.definition;
+                               prototypeResources[id.resource] =
+                                       store.identities.getChild(
+                                                       prototypeResources[def.parent], 
+                                                       def.name);
+                       }
+                       else
+                               throw new RuntimeException("Invalid template");
+               }
+       }
+       
+       @Override
+       public void apply(IGraph graph, GraphStore store, int[] parameters, ExternalFileLoader fileLoader, Collection<Problem> problems) {
+               if(parameters.length != parameterMapping.length) {
+                       Location location = store.getStore(LocationStore.class)
+                               .getLocation(parameters[0]);
+                       problems.add(new Problem(location, "A template applied with wrong number of parameters."));
+                       return;
+               }
+               int[] resources = Arrays.copyOf(prototypeResources, prototypeResources.length);
+               for(int i=0;i<parameterMapping.length;++i)
+                       resources[parameterMapping[i]] = parameters[i];
+               
+               IdentityStore identities = store.identities;
+               for(int i=0;i<resources.length;++i)
+                       if(resources[i] < 0)
+                               resources[i] = identities.newResource();
+               
+               StatementStore statementStore = store.statements;
+               for(int i=0;i<statements.length;i+=4) {
+                       statementStore.add(
+                                       resources[statements[i]],
+                                       resources[statements[i+1]],
+                                       resources[statements[i+3]]
+                       );
+               }
+               
+               ValueStore valueStore = store.values;
+               for(Value value : values) {
+                       valueStore.setValue(resources[value.resource], value.value);
+               }
+       }
+
+       public void map(TIntIntHashMap map) {
+               for(int i=0;i<prototypeResources.length;++i) {
+                       int temp = prototypeResources[i];
+                       if(temp >= 0 && map.contains(temp))
+                               prototypeResources[i] = map.get(temp);
+               }
+       }       
+}