Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Buffer.toSeq like WrappedArray but with length cut-off #18

Open
denisrosset opened this issue Aug 17, 2014 · 1 comment
Open

Comments

@denisrosset
Copy link

The contract of Iterable[A] does not prescribe an order for the elements; thus methods take Seq[A] parameters to document this fact --- and not especially to prescribe fast linear/indexed access.

As debox.Buffer has its elements ordered, a toSeq array wrapper would be a great addition. Right now, collection.mutable.WrappedArray cannot be used because the underlying debox.Buffer.elems array could be longer than the buffer itself.

Thus I propose to create an ArrayView class implementing Seq, with private fields array, offset and length and a few methods overridden for speed: I'm thinking of head, tail, apply, foreach, iterator, drop, take. The implementation trait for the other methods would have to be carefully chosen from the Scala collections to use linear access.

I can try a proof of concept PR: any interest ?

@non
Copy link
Owner

non commented Aug 17, 2014

So, there are issues with mixing specialization and Seq[A]. Feel free to give it a shot -- we might need to extensively modify you code to try to get it to work with specialization properly. In any case, having a .toSeq conversion seems useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants