Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Ringo.Weighted_Dll
SourceWeighted_Dll
is similar to Dll
but comes with a notion of data weight as capacity instead of being based on the number of elements. The documentation is available in UNBOXED_WEIGHTED_COLLECTION
.
By contrast to Dll
, elements require their weight to be provided in order to be inserted in the doubly-linked list.
The type of bounded-size buffers.
total_weight b
is the summed weight of all elements that are currently in b
.
add b (v, w)
adds the value v
of weight w
to the buffer b
. If the buffer b
cannot hold this value, i.e., w > capacity b
then this value is not added. And, if by adding this value, the buffer would get too full, older values will be dropped until the v
fits.
add_and_return_erased b (v, w)
has the same effect as add b (v,w)
but it also returns the dropped values when applicable (and None
otherwise). Dropped values are ordered from the oldest to the most recently inserted
add_list b vs
adds each element (with their weight) of the list vs
in the order they appear in the list. It returns a list of nodes, for each of the inserted elements. Elements that are too large in vs
w.r.t to capacity b
are filtered out.
If the total weight of vs
is larger than capacity b
then a first-fit strategy is used and the last elements in vs
are prioritized.
For instance: add_list (create 5) [(x, 1); (y, 3); (z, 4)]
will successfully return [x ; z]
which are added in the buffer.
fold b ~init ~f
folds over the value of the buffer b
, newest to oldest.
fold_oldest_first b ~init ~f
folds over the value of the buffer b
, oldest to newest.
elements b
is a list that contains the same elements as the buffer b
, oldest first, newest last.
oldest_element b
returns the oldest inserted element from the buffer b
if any.
newest_element b
returns the oldest inserted element from the buffer b
if any.
remove_oldest b
removes and returns the oldest inserted element from the buffer b
or None
if the buffer is empty.