@@ -897,7 +897,7 @@ module {
897
897
let (end_node, end_node_index) = Methods . get_leaf_node_by_index(btree, end);
898
898
899
899
let start_index = start_node_index : Nat ;
900
- let end_index = end_node_index + 1 : Nat ; // + 1 because the end index is exclusive
900
+ let end_index = end_node_index : Nat ;
901
901
902
902
RevIter . map< (Blob , Blob ), (K , V )> (
903
903
Methods . new_blobs_iterator(btree, start_node, start_index, end_node, end_index),
@@ -907,6 +907,20 @@ module {
907
907
);
908
908
};
909
909
910
+ public func getInterval< K , V > (btree : MemoryBTree , btree_utils : BTreeUtils < K , V > , start : ?K , end : ?K ) : (Nat , Nat ) {
911
+ let start_rank = switch (start) {
912
+ case (?key) getIndex(btree, btree_utils, key);
913
+ case (null ) 0 ;
914
+ };
915
+
916
+ let end_rank = switch (end) {
917
+ case (?key) getIndex(btree, btree_utils, key) + 1 ; // +1 because the end is exclusive
918
+ case (null ) btree. count;
919
+ };
920
+
921
+ (start_rank, end_rank);
922
+ };
923
+
910
924
public func scan< K , V > (btree : MemoryBTree , btree_utils : BTreeUtils < K , V > , start : ?K , end : ?K ) : RevIter < (K , V )> {
911
925
let start_address = switch (start) {
912
926
case (?key) {
0 commit comments