minor adjustments to gap_vector.sml to make functor fit GAP_VECTOR signature
This commit is contained in:
@@ -21,8 +21,10 @@ sig
|
|||||||
val deleteMany: int * int * t -> t
|
val deleteMany: int * int * t -> t
|
||||||
end
|
end
|
||||||
|
|
||||||
functor MakeGapVector(Fn: GAP_VECTOR_INPUT) =
|
functor MakeGapVector(Fn: GAP_VECTOR_INPUT): GAP_VECTOR =
|
||||||
struct
|
struct
|
||||||
|
structure Fn = Fn
|
||||||
|
|
||||||
type t = {idx: int, left: Fn.elem vector list, right: Fn.elem vector list}
|
type t = {idx: int, left: Fn.elem vector list, right: Fn.elem vector list}
|
||||||
|
|
||||||
val empty = {idx = 0, left = [], right = []}
|
val empty = {idx = 0, left = [], right = []}
|
||||||
@@ -280,9 +282,12 @@ struct
|
|||||||
insRight (nextIdx, idx, newVector, curIdx, left, hd, tail)
|
insRight (nextIdx, idx, newVector, curIdx, left, hd, tail)
|
||||||
end
|
end
|
||||||
|
|
||||||
fun insert (idx, newVector, buffer: t) =
|
fun insertMany (idx, newVector, buffer: t) =
|
||||||
ins (idx, newVector, #idx buffer, #left buffer, #right buffer)
|
ins (idx, newVector, #idx buffer, #left buffer, #right buffer)
|
||||||
|
|
||||||
|
fun insert (idx, elem, buffer) =
|
||||||
|
insertMany (idx, Vector.fromList [elem], buffer)
|
||||||
|
|
||||||
fun deleteRightFromHere (curIdx, finish, right) =
|
fun deleteRightFromHere (curIdx, finish, right) =
|
||||||
case right of
|
case right of
|
||||||
hd :: tail =>
|
hd :: tail =>
|
||||||
@@ -497,7 +502,7 @@ struct
|
|||||||
, right = deleteRightFromHere (curIdx, finish, right)
|
, right = deleteRightFromHere (curIdx, finish, right)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun delete (start, length, buffer: t) =
|
fun deleteMany (start, length, buffer: t) =
|
||||||
if length > 0 then
|
if length > 0 then
|
||||||
del (start, start + length, #idx buffer, #left buffer, #right buffer)
|
del (start, start + length, #idx buffer, #left buffer, #right buffer)
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user