264
264
# indexing uses the indices along the given dimension. Otherwise
265
265
# linear indexing always starts with 1.
266
266
compute_offset1 (parent, stride1:: Integer , I:: Tuple ) =
267
- (@_inline_meta ; compute_offset1 (parent, stride1, find_extended_dims (I) ... , I))
267
+ (@_inline_meta ; compute_offset1 (parent, stride1, find_extended_dims (1 , I ... ), find_extended_inds (I ... ) , I))
268
268
compute_offset1 (parent, stride1:: Integer , dims:: Tuple{Int} , inds:: Tuple{Slice} , I:: Tuple ) =
269
269
(@_inline_meta ; compute_linindex (parent, I) - stride1* first (indices (parent, dims[1 ]))) # index-preserving case
270
270
compute_offset1 (parent, stride1:: Integer , dims, inds, I:: Tuple ) =
@@ -287,12 +287,12 @@ function compute_linindex(f, s, IP::Tuple, I::Tuple{Any, Vararg{Any}})
287
287
end
288
288
compute_linindex (f, s, IP:: Tuple , I:: Tuple{} ) = f
289
289
290
- find_extended_dims (I ) = (@_inline_meta ; _find_extended_dims ((), (), 1 , I... ))
291
- _find_extended_dims (dims, inds, dim ) = dims, inds
292
- _find_extended_dims (dims, inds, dim, :: ScalarIndex , I ... ) =
293
- (@_inline_meta ; _find_extended_dims (dims, inds, dim + 1 , I... ))
294
- _find_extended_dims (dims, inds, dim, i1, I... ) =
295
- ( @_inline_meta ; _find_extended_dims ((dims ... , dim), (inds ... , i1), dim + 1 , I ... ) )
290
+ find_extended_dims (dim, :: ScalarIndex , I ... ) = (@_inline_meta ; find_extended_dims (dim + 1 , I... ))
291
+ find_extended_dims (dim, i1, I ... ) = ( @_inline_meta ; (dim, find_extended_dims (dim + 1 , I ... ) ... ))
292
+ find_extended_dims ( dim) = ()
293
+ find_extended_inds ( :: ScalarIndex , I ... ) = (@_inline_meta ; find_extended_inds ( I... ))
294
+ find_extended_inds (i1, I ... ) = ( @_inline_meta ; ( i1, find_extended_inds ( I... )... ))
295
+ find_extended_inds () = ( )
296
296
297
297
unsafe_convert (:: Type{Ptr{T}} , V:: SubArray{T,N,P,<:Tuple{Vararg{RangeIndex}}} ) where {T,N,P} =
298
298
unsafe_convert (Ptr{T}, V. parent) + (first_index (V)- 1 )* sizeof (T)
0 commit comments