11
22# interface
33
4- @inline getindex (b:: AbstractVector , K:: BlockIndex{1} ) = b[Block (K. I[1 ])][K. α[1 ]]
5- @inline getindex (b:: AbstractArray{T,N} , K:: BlockIndex{N} ) where {T,N} =
4+ @propagate_inbounds getindex (b:: AbstractVector , K:: BlockIndex{1} ) = b[Block (K. I[1 ])][K. α[1 ]]
5+ @propagate_inbounds getindex (b:: AbstractArray{T,N} , K:: BlockIndex{N} ) where {T,N} =
66 b[block (K)][K. α... ]
7- @inline getindex (b:: AbstractArray , K:: BlockIndex{1} , J:: BlockIndex{1} ...) =
7+ @propagate_inbounds getindex (b:: AbstractArray , K:: BlockIndex{1} , J:: BlockIndex{1} ...) =
88 b[BlockIndex (tuple (K, J... ))]
99
10- @inline getindex (b:: AbstractArray{T,N} , K:: BlockIndexRange{N} ) where {T,N} = b[block (K)][K. indices... ]
11- @inline getindex (b:: LayoutArray{T,N} , K:: BlockIndexRange{N} ) where {T,N} = b[block (K)][K. indices... ]
12- @inline getindex (b:: LayoutArray{T,1} , K:: BlockIndexRange{1} ) where {T} = b[block (K)][K. indices... ]
10+ @propagate_inbounds getindex (b:: AbstractArray{T,N} , K:: BlockIndexRange{N} ) where {T,N} = b[block (K)][K. indices... ]
11+ @propagate_inbounds getindex (b:: LayoutArray{T,N} , K:: BlockIndexRange{N} ) where {T,N} = b[block (K)][K. indices... ]
12+ @propagate_inbounds getindex (b:: LayoutArray{T,1} , K:: BlockIndexRange{1} ) where {T} = b[block (K)][K. indices... ]
1313
1414function findblockindex (b:: AbstractVector , k:: Integer )
1515 @boundscheck k in b || throw (BoundsError ())
@@ -252,7 +252,7 @@ first(b::BlockedUnitRange) = b.first
252252# ::Integer works around case where blocklasts might return different type
253253last (b:: BlockedUnitRange ):: Integer = isempty (blocklasts (b)) ? first (b)- 1 : last (blocklasts (b))
254254
255- function getindex (b:: BlockedUnitRange , K:: Block{1} )
255+ @propagate_inbounds function getindex (b:: BlockedUnitRange , K:: Block{1} )
256256 k = Integer (K)
257257 bax = blockaxes (b,1 )
258258 cs = blocklasts (b)
@@ -262,7 +262,7 @@ function getindex(b::BlockedUnitRange, K::Block{1})
262262 return cs[k- 1 ]+ 1 : cs[k]
263263end
264264
265- function getindex (b:: BlockedUnitRange , KR:: BlockRange{1} )
265+ @propagate_inbounds function getindex (b:: BlockedUnitRange , KR:: BlockRange{1} )
266266 cs = blocklasts (b)
267267 isempty (KR) && return _BlockedUnitRange (1 ,cs[1 : 0 ])
268268 K,J = first (KR),last (KR)
@@ -274,7 +274,7 @@ function getindex(b::BlockedUnitRange, KR::BlockRange{1})
274274 _BlockedUnitRange (cs[k- 1 ]+ 1 ,cs[k: j])
275275end
276276
277- function getindex (b:: BlockedUnitRange , KR:: BlockRange{1,Tuple{Base.OneTo{Int}}} )
277+ @propagate_inbounds function getindex (b:: BlockedUnitRange , KR:: BlockRange{1,Tuple{Base.OneTo{Int}}} )
278278 cs = blocklasts (b)
279279 isempty (KR) && return _BlockedUnitRange (1 ,cs[Base. OneTo (0 )])
280280 J = last (KR)
@@ -284,7 +284,7 @@ function getindex(b::BlockedUnitRange, KR::BlockRange{1,Tuple{Base.OneTo{Int}}})
284284 _BlockedUnitRange (first (b),cs[Base. OneTo (j)])
285285end
286286
287- getindex (b:: BlockedUnitRange , KR:: BlockSlice ) = b[KR. block]
287+ @propagate_inbounds getindex (b:: BlockedUnitRange , KR:: BlockSlice ) = b[KR. block]
288288
289289_searchsortedfirst (a:: AbstractVector , k) = searchsortedfirst (a, k)
290290function _searchsortedfirst (a:: Tuple , k)
@@ -314,12 +314,12 @@ function Base.checkindex(::Type{Bool}, axis::BlockedUnitRange, ind::BlockIndex{1
314314 checkindex (Bool, axis, block (ind)) && checkbounds (Bool, axis[block (ind)], blockindex (ind))
315315end
316316
317- function getindex (b:: AbstractUnitRange{Int} , K:: Block{1} )
317+ @propagate_inbounds function getindex (b:: AbstractUnitRange{Int} , K:: Block{1} )
318318 @boundscheck K == Block (1 ) || throw (BlockBoundsError (b, K))
319319 b
320320end
321321
322- function getindex (b:: AbstractUnitRange{Int} , K:: BlockRange )
322+ @propagate_inbounds function getindex (b:: AbstractUnitRange{Int} , K:: BlockRange )
323323 @boundscheck K == Block .(1 : 1 ) || throw (BlockBoundsError (b, K))
324324 b
325325end
@@ -422,8 +422,8 @@ Base.axes(S::Base.Slice{<:BlockedUnitRange}) = (S.indices,)
422422Base. unsafe_indices (S:: Base.Slice{<:BlockedUnitRange} ) = (S. indices,)
423423Base. axes1 (S:: Base.Slice{<:BlockedUnitRange} ) = S. indices
424424blockaxes (S:: Base.Slice ) = blockaxes (S. indices)
425- getindex (S:: Base.Slice , b:: Block{1} ) = S. indices[b]
426- getindex (S:: Base.Slice , b:: BlockRange{1} ) = S. indices[b]
425+ @propagate_inbounds getindex (S:: Base.Slice , b:: Block{1} ) = S. indices[b]
426+ @propagate_inbounds getindex (S:: Base.Slice , b:: BlockRange{1} ) = S. indices[b]
427427
428428
429429# This supports broadcasting with infinite block arrays
0 commit comments