X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fsolver%2FSpreadsheetLines.java;h=b42e722df53f00d10fd16ed220c9150cacec2b32;hb=6fe905dfb156d33eecf37d3748864db9e0868e06;hp=e53d7cb61624109dd53b87f119604c1fd6c982c5;hpb=5c67a96d34fe904b8c4b0375cd08ff1d543bf369;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/SpreadsheetLines.java b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/SpreadsheetLines.java index e53d7cb61..b42e722df 100644 --- a/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/SpreadsheetLines.java +++ b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/SpreadsheetLines.java @@ -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 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) {