add functions to replace start and end leaves in rrb_rope.sml

This commit is contained in:
2025-10-23 06:41:21 +01:00
parent 6f406069a8
commit 4126c833d1

View File

@@ -150,4 +150,27 @@ struct
in
LEAF items
end
fun replaceStartLeaf (newStart, tree) =
case tree of
BRANCH nodes =>
let
val startNode = replaceStartLeaf (newStart, Vector.sub (nodes, 0))
val nodes = Vector.update (nodes, 0, startNode)
in
BRANCH nodes
end
| LEAF _ => LEAF newStart
fun replaceEndLeaf (newEnd, tree) =
case tree of
BRANCH nodes =>
let
val endNode = Vector.sub (nodes, Vector.length nodes - 1)
val endNode = replaceEndLeaf (newEnd, endNode)
val nodes = Vector.update (nodes, Vector.length nodes - 1, endNode)
in
BRANCH endNode
end
| LEAF _ => LEAF newEnd
end