]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/SpreadsheetLines.java
SCL API for direct access to SpreadsheetBooks
[simantics/platform.git] / bundles / org.simantics.spreadsheet / src / org / simantics / spreadsheet / solver / SpreadsheetLines.java
index e53d7cb61624109dd53b87f119604c1fd6c982c5..b42e722df53f00d10fd16ed220c9150cacec2b32 100644 (file)
@@ -4,6 +4,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Optional;
+import java.util.function.Consumer;
 
 import org.simantics.spreadsheet.SpreadsheetVisitor;
 import org.simantics.spreadsheet.Spreadsheets;
@@ -140,6 +141,35 @@ public class SpreadsheetLines implements SpreadsheetElement<SpreadsheetLine, Spr
 
     }
 
+    public String getLinesPath() {
+        return getName();
+    }
+    
+    public void forLines(Consumer<SpreadsheetLine> consumer, int min, int max) {
+
+        int i=1;
+        int n = (keys.length - 1) / 2;
+
+        // Smaller keys
+        while(i <= n && min > getKey(i-1)) i++;
+        
+        while(i <= n && max > getKey(i-1)) {
+
+            int nodeName = getChild(i-1);
+            
+            SpreadsheetLines node = nodes.get(nodeName);
+            if(node == null) {
+                consumer.accept(lines.get(-getKey(i-1)));
+            } else {
+                node.forLines(consumer, min, max);
+            }
+            
+            i++;
+            
+        }
+        
+    }
+
     public int getMaxRow() {
         // if keys == null then this is the root of BTree which has only one child 
         if (keys == null) {