[PR 1/5] Organize Buffer's segments as a regular list #332
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, Buffer's segments were organized into a circular list.
That allowed storing only a single reference to buffer's head, and also facilitated insertion/removal of new list nodes.
The downside of a circular list is that one has to always compare a current node with a head when iterating over segments.
That complicates the implementation of a public API for segments iterations (See #135 (comment) for details on segment iteration API).
This PR changes how segments are organized within a buffer to no longer form a circular list. Head's previous node and tail's next node now will always be
null
.