--- /dev/null
+package org.simantics.scl.compiler.internal.elaboration.matching;\r
+\r
+\r
+import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
+\r
+public class Row {\r
+ Expression[] patterns;\r
+ Expression value;\r
+ \r
+ public Row(Expression[] patterns, Expression value) {\r
+ this.patterns = patterns;\r
+ this.value = value;\r
+ }\r
+ \r
+ public Row replace(int columnToReplace, Expression[] substitution) {\r
+ Expression[] newPatterns = new Expression[patterns.length-1+substitution.length];\r
+ int j=0;\r
+ for(int i=0;i<columnToReplace;++i)\r
+ newPatterns[j++] = patterns[i];\r
+ for(int i=0;i<substitution.length;++i)\r
+ newPatterns[j++] = substitution[i];\r
+ for(int i=columnToReplace+1;i<patterns.length;++i)\r
+ newPatterns[j++] = patterns[i];\r
+ return new Row(newPatterns, value);\r
+ }\r
+}\r