Res.MakeBuffer
Functor that creates resizable buffers (=string arrays) from reallocation strategies.
module S : sig ... end
Includes all functions that exist in non-parameterized arrays.
module Strategy = S
Module implementing the reallocation strategy
type strategy = Strategy.t
Type of reallocation strategy
val length : t -> int
length ra
val lix : t -> int
lix ra
val real_length : t -> int
real_length ra
val real_lix : t -> int
real_lix ra
val empty : unit -> t
empty ()
same as sempty
but uses default strategy.
val create : int -> t
create n
same as screate
but uses default strategy.
set_strategy ra s
sets the reallocation strategy of resizable array ra
to s
, possibly causing an immediate reallocation.
put_strategy ra s
sets the reallocation strategy of resizable array ra
to s
. Reallocation is only done at later changes in size.
val enforce_strategy : t -> unit
enforce_strategy ra
forces a reallocation if necessary (e.g. after a put_strategy
).
fill ra ofs len el
fills resizable array ra
from offset ofs
with len
elements el
, possibly adding elements at the end. Raises Invalid_argument
if offset ofs
is larger than the length of the array.
blit ra1 ofs1 ra2 ofs2 len
blits resizable array ra1
onto ra2
reading len
elements from offset ofs1
and writing them to ofs2
, possibly adding elements at the end of ra2. Raises Invalid_argument
if ofs1
and len
do not designate a valid subarray of ra1
or if ofs2
is larger than the length of ra2
.
add_one ra el
adds element el
to resizable array ra
, possibly causing a reallocation.
val remove_one : t -> unit
remove_one ra
removes the last element of resizable array ra
, possibly causing a reallocation.
val remove_n : t -> int -> unit
remove_n ra n
removes the last n elements of resizable array ra
, possibly causing a reallocation.
val remove_range : t -> int -> int -> unit
remove_range ra ofs len
removes len
elements from resizable array ra
starting at ofs
and possibly causing a reallocation.
val clear : t -> unit
clear ra
removes all elements from resizable array ra
, possibly causing a reallocation.
val swap : t -> int -> int -> unit
swap ra n m
swaps elements at indices n
and m
.
val swap_in_last : t -> int -> unit
swap_in_last ra n
swaps the last element with the one at position n
.
sof_array s ar
converts a standard array to a resizable one, using strategy s
.
of_array ar
converts a standard array to a resizable one using the default strategy.
sof_list s l
creates a resizable array using strategy s
and the elements in list l
.
of_list l
creates a resizable array using the default strategy and the elements in list l
.
iter f ra
applies the unit-function f
to each element in resizable array ra
.
iteri f ra
applies the unit-function f
to each index and element in resizable array ra
.
fold_left f a ra
left-folds values in resizable array ra
using function f
and start accumulator a
.
fold_right f a ra
right-folds values in resizable array ra
using function f
and start accumulator a
.
filter_in_place p ra
as filter
, but filters in place.
val unsafe_remove_one : t -> unit
val unsafe_remove_n : t -> int -> unit
val unsafe_swap : t -> int -> int -> unit
val unsafe_swap_in_last : t -> int -> unit
sof_string s ar
converts a string to a resizable buffer using strategy s
.
val of_string : string -> t
of_string ar
converts a string to a resizable buffer using the default strategy.
Buffer
-moduleNote that the function create n
ignores the parameter n
and uses the default strategy instead. You can supply a different strategy with creates s n
as described above.
val contents : t -> string
contents b
val reset : t -> unit
reset b
just clears the buffer, possibly resizing it.
val add_char : t -> char -> unit
add_char b c
appends the character c
at the end of the buffer b
.
val add_string : t -> string -> unit
add_string b s
appends the string s
at the end of the buffer b
.
val add_substring : t -> string -> int -> int -> unit
add_substring b s ofs len
takes len
characters from offset ofs
in string s
and appends them at the end of the buffer b
.
add_buffer b1 b2
appends the current contents of buffer b2
at the end of buffer b1
. b2
is not modified.
val add_channel : t -> Stdlib.in_channel -> int -> unit
add_channel b ic n
reads exactly n
character from the input channel ic
and stores them at the end of buffer b
.
val output_buffer : Stdlib.out_channel -> t -> unit
output_buffer oc b
writes the current contents of buffer b
on the output channel oc
.
val add_full_channel : t -> Stdlib.in_channel -> unit
val add_full_channel_f : t -> Stdlib.in_channel -> int -> (int -> int) -> unit