]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/matching/Row.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / matching / Row.java
1 package org.simantics.scl.compiler.internal.elaboration.matching;\r
2 \r
3 \r
4 import java.util.Arrays;\r
5 \r
6 import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
7 \r
8 public class Row {\r
9     Expression[] patterns;\r
10     Expression value;\r
11     \r
12     public Row(Expression[] patterns, Expression value) {\r
13         this.patterns = patterns;\r
14         this.value = value;\r
15     }\r
16     \r
17     public Row replace(int columnToReplace, Expression[] substitution) {\r
18         Expression[] newPatterns = new Expression[patterns.length-1+substitution.length];\r
19         int j=0;\r
20         for(int i=0;i<columnToReplace;++i)\r
21             newPatterns[j++] = patterns[i];\r
22         for(int i=0;i<substitution.length;++i)\r
23             newPatterns[j++] = substitution[i];\r
24         for(int i=columnToReplace+1;i<patterns.length;++i)\r
25             newPatterns[j++] = patterns[i];\r
26         return new Row(newPatterns, value);\r
27     }\r
28     \r
29     @Override\r
30     public String toString() {\r
31         return Arrays.toString(patterns) + " -> " + value;\r
32     }\r
33 }\r