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