]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph/src/org/simantics/graph/matching/CanonicalGraph.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.graph / src / org / simantics / graph / matching / CanonicalGraph.java
index b95e0cf82c92e86dca730714e77a9f58c5365956..3e2002dd8a3f5d2437947a42241e85e9214f74b2 100644 (file)
-package org.simantics.graph.matching;\r
-\r
-import gnu.trove.map.hash.TIntIntHashMap;\r
-\r
-import java.util.ArrayList;\r
-\r
-import org.simantics.databoard.binding.mutable.Variant;\r
-import org.simantics.graph.representation.External;\r
-import org.simantics.graph.representation.Identity;\r
-import org.simantics.graph.representation.Internal;\r
-import org.simantics.graph.representation.Optional;\r
-import org.simantics.graph.representation.Root;\r
-import org.simantics.graph.representation.TransferableGraph1;\r
-import org.simantics.graph.representation.Value;\r
-\r
-public class CanonicalGraph {\r
-\r
-       int resourceCount;\r
-       Stat[][] statements;\r
-       TIntIntHashMap inverses = new TIntIntHashMap();\r
-       Identity[] identities;\r
-       String[] names;\r
-       Variant[] values;\r
-       \r
-       public CanonicalGraph(TransferableGraph1 tg) {\r
-               this.resourceCount = tg.resourceCount;\r
-               this.identities = tg.identities;\r
-               \r
-               int[] oldStatements = tg.statements;\r
-               @SuppressWarnings("unchecked")\r
-               ArrayList<Stat>[] newStatements = new ArrayList[tg.resourceCount];\r
-               for(int i=0;i<newStatements.length;++i)\r
-                       newStatements[i] = new ArrayList<Stat>(2);\r
-               \r
-               for(int i=0;i<oldStatements.length;i+=4) {\r
-                       int p = oldStatements[i+1];\r
-                       int inv = oldStatements[i+2];\r
-                       if(inv >= 0) {\r
-                               inverses.put(p, inv);\r
-                               inverses.put(inv, p);\r
-                       }\r
-               }\r
-               \r
-               for(int i=0;i<oldStatements.length;i+=4) {\r
-                       int s = oldStatements[i];\r
-                       int p = oldStatements[i+1];\r
-                       int inv = oldStatements[i+2];\r
-                       int o = oldStatements[i+3];\r
-                       if(inv < 0) {\r
-                               if(inverses.contains(p))\r
-                                       inv = inverses.get(p);\r
-                               else {\r
-                                       inv = resourceCount++;\r
-                                       inverses.put(p, inv);\r
-                                       inverses.put(inv, p);\r
-                               }\r
-                       }\r
-                       newStatements[s].add(new Stat(p, o));\r
-                       newStatements[o].add(new Stat(inv, s));\r
-               }\r
-               \r
-               // Statements\r
-               Stat[][] statements = new Stat[resourceCount][];\r
-               for(int i=0;i<tg.resourceCount;++i) {\r
-                       int size = newStatements[i].size();\r
-                       if(size == 0)\r
-                               statements[i] = Stat.NO_STATS;\r
-                       else\r
-                               statements[i] = newStatements[i].toArray(new Stat[size]);\r
-               }\r
-               for(int i=tg.resourceCount;i<resourceCount;++i)\r
-                       statements[i] = Stat.NO_STATS;\r
-               this.statements = statements;\r
-               \r
-               // Names\r
-               if(GraphMatching.DEBUG) {\r
-                       names = new String[resourceCount];\r
-                       for(Identity id : identities) {\r
-                               if(id.definition instanceof External)\r
-                                       names[id.resource] = ((External)id.definition).name;\r
-                               else if(id.definition instanceof Internal)\r
-                                       names[id.resource] = ((Internal)id.definition).name;\r
-                               else if(id.definition instanceof Optional)\r
-                                       names[id.resource] = ((Optional)id.definition).name;\r
-                               else if(id.definition instanceof Root)\r
-                                       names[id.resource] = "ROOT(" + ((Root)id.definition).name + ")";\r
-                       }\r
-                       for(int i=0;i<tg.resourceCount;++i)\r
-                               if(names[i] == null)\r
-                                       names[i] = "r" + i;\r
-                       for(int i=tg.resourceCount;i<resourceCount;++i)\r
-                               names[i] = "inverse(" + names[inverses.get(i)] + ")";\r
-               }\r
-               \r
-               // Values\r
-               {\r
-                       Variant[] values = new Variant[resourceCount];\r
-                       for(Value value : tg.values)\r
-                               values[value.resource] = value.value;\r
-                       this.values = values;\r
-               }\r
-       }\r
-       \r
-}\r
+package org.simantics.graph.matching;
+
+import gnu.trove.map.hash.TIntIntHashMap;
+
+import java.util.ArrayList;
+
+import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.graph.representation.External;
+import org.simantics.graph.representation.Identity;
+import org.simantics.graph.representation.Internal;
+import org.simantics.graph.representation.Optional;
+import org.simantics.graph.representation.Root;
+import org.simantics.graph.representation.TransferableGraph1;
+import org.simantics.graph.representation.Value;
+
+public class CanonicalGraph {
+
+       int resourceCount;
+       Stat[][] statements;
+       TIntIntHashMap inverses = new TIntIntHashMap();
+       Identity[] identities;
+       String[] names;
+       Variant[] values;
+       
+       public CanonicalGraph(TransferableGraph1 tg) {
+               this.resourceCount = tg.resourceCount;
+               this.identities = tg.identities;
+               
+               int[] oldStatements = tg.statements;
+               @SuppressWarnings("unchecked")
+               ArrayList<Stat>[] newStatements = new ArrayList[tg.resourceCount];
+               for(int i=0;i<newStatements.length;++i)
+                       newStatements[i] = new ArrayList<Stat>(2);
+               
+               for(int i=0;i<oldStatements.length;i+=4) {
+                       int p = oldStatements[i+1];
+                       int inv = oldStatements[i+2];
+                       if(inv >= 0) {
+                               inverses.put(p, inv);
+                               inverses.put(inv, p);
+                       }
+               }
+               
+               for(int i=0;i<oldStatements.length;i+=4) {
+                       int s = oldStatements[i];
+                       int p = oldStatements[i+1];
+                       int inv = oldStatements[i+2];
+                       int o = oldStatements[i+3];
+                       if(inv < 0) {
+                               if(inverses.contains(p))
+                                       inv = inverses.get(p);
+                               else {
+                                       inv = resourceCount++;
+                                       inverses.put(p, inv);
+                                       inverses.put(inv, p);
+                               }
+                       }
+                       newStatements[s].add(new Stat(p, o));
+                       newStatements[o].add(new Stat(inv, s));
+               }
+               
+               // Statements
+               Stat[][] statements = new Stat[resourceCount][];
+               for(int i=0;i<tg.resourceCount;++i) {
+                       int size = newStatements[i].size();
+                       if(size == 0)
+                               statements[i] = Stat.NO_STATS;
+                       else
+                               statements[i] = newStatements[i].toArray(new Stat[size]);
+               }
+               for(int i=tg.resourceCount;i<resourceCount;++i)
+                       statements[i] = Stat.NO_STATS;
+               this.statements = statements;
+               
+               // Names
+               if(GraphMatching.DEBUG) {
+                       names = new String[resourceCount];
+                       for(Identity id : identities) {
+                               if(id.definition instanceof External)
+                                       names[id.resource] = ((External)id.definition).name;
+                               else if(id.definition instanceof Internal)
+                                       names[id.resource] = ((Internal)id.definition).name;
+                               else if(id.definition instanceof Optional)
+                                       names[id.resource] = ((Optional)id.definition).name;
+                               else if(id.definition instanceof Root)
+                                       names[id.resource] = "ROOT(" + ((Root)id.definition).name + ")";
+                       }
+                       for(int i=0;i<tg.resourceCount;++i)
+                               if(names[i] == null)
+                                       names[i] = "r" + i;
+                       for(int i=tg.resourceCount;i<resourceCount;++i)
+                               names[i] = "inverse(" + names[inverses.get(i)] + ")";
+               }
+               
+               // Values
+               {
+                       Variant[] values = new Variant[resourceCount];
+                       for(Value value : tg.values)
+                               values[value.resource] = value.value;
+                       this.values = values;
+               }
+       }
+       
+}