Module Res.DefStrat

module DefStrat: Strat.T  with type t = float * float * int
Default strategy for resizable datastructures

type t is a triple waste, shrink_trig, min_size, where waste (default: 1.5) indicates by how much the array should be grown in excess when reallocation is triggered, shrink_trig (default: 0.5) at which percentage of excess elements it should be shrinked and min_size (default: 16 elements) is the minimum size of the resizable array.


type t 
The abstract type of strategies.
val default : t
Default strategy of this strategy implementation.
val grow : t -> int -> int
grow strat new_len
Returns the new real length of some contiguous datastructure using strategy strat given new virtual length new_len. The user should then use this new real length to resize the datastructure.

Be careful, the new (real) length must be larger than the new virtual length, otherwise your program will crash!

val shrink : t -> real_len:int -> new_len:int -> int
shrink strat ~real_len ~new_len
Returns the new real length of a resizable datastructure given its current real length real_len and its required new virtual length new_len wrt. strategy strat. The user should then use this new real length to resize the datastructure. If -1 is returned, it is not necessary to resize.

Be careful, the new (real) length must be larger than the new (virtual) length, otherwise your program may crash!