Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Ringo.Weighted_DllSourceWeighted_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.