On Thursday, 9 March 2017 at 09:10:47 UTC, Nordlöw wrote:
On Thursday, 9 March 2017 at 08:59:28 UTC, Ilya Yaroshenko wrote:
Ndslice got [1] lazy multidimensional concatenation and padding utilities:

Nice. Is this dependent on choosing either RC- or GC-based allocation?

No, they are completely generic.

The new ndslice uses iterators under the hood. An iterator for manually allocated memory (with `makeSlice!T`) and GC allocated memory (with `slice!T`) is just a pointer type of T*.

You can use `slicedField` [1] to create ndslice on top of a RC-array. slicedField will create iterator on top of the rc-array using FieldIterator [2], and return ndslice based on the iterator. This is quite simple

RC arrays can be very simple: only `auto ref opIndex(size_t index)` and `length` are required. `front`, `opSlice` and other RAR primitives are not used by FieldIterator.

[1] http://docs.algorithm.dlang.io/latest/mir_ndslice_slice.html#slicedField [2] http://docs.algorithm.dlang.io/latest/mir_ndslice_iterator.html#FieldIterator

Reply via email to