@@ -177,6 +177,9 @@ if VERSION < v"1.8.2"
177177end
178178@inline Base. unsafe_indices (r:: IdOffsetRange ) = (axes1 (r),)
179179@inline Base. length (r:: IdOffsetRange ) = length (r. parent)
180+ if VERSION >= v " 1.7"
181+ @inline Base. checked_length (x:: IdOffsetRange ) = Base. checked_length (x. parent)
182+ end
180183@inline Base. isempty (r:: IdOffsetRange ) = isempty (r. parent)
181184#= We specialize on reduced_indices to work around cases where the parent axis type doesn't
182185support reduced_index, but the axes do support reduced_indices
@@ -275,7 +278,11 @@ Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(+), x::Int
275278Broadcast. broadcasted (:: Base.Broadcast.DefaultArrayStyle{1} , :: typeof (big), r:: IdOffsetRange ) =
276279 IdOffsetRange (big .(r. parent), r. offset)
277280
278- Base. show (io:: IO , r:: IdOffsetRange ) = print (io, IdOffsetRange, " (values=" ,first (r), ' :' , last (r)," , indices=" ,first (eachindex (r)),' :' ,last (eachindex (r)), " )" )
281+ function Base. show (io:: IO , r:: IdOffsetRange )
282+ values_offset = r. parent .+ r. offset
283+ indices_offset = axes (r. parent,1 ) .+ r. offset
284+ print (io, IdOffsetRange, " (values=" ,values_offset," , indices=" ,indices_offset," )" )
285+ end
279286
280287# Optimizations
281288@inline Base. checkindex (:: Type{Bool} , inds:: IdOffsetRange , i:: Real ) = Base. checkindex (Bool, inds. parent, i - inds. offset)
@@ -287,6 +294,8 @@ if VERSION < v"1.5.2"
287294 Base. compute_linindex (parent, I) - stride1* first (Base. axes1 (inds[1 ]))
288295end
289296
297+ Base. IteratorSize (:: Type{<:IdOffsetRange{<:Any,I}} ) where {I} = Base. IteratorSize (I)
298+
290299# This was deemed "too private" to extend: see issue #184
291300# # Fixes an inference failure in Base.mapfirst!
292301# # Test: A = OffsetArray(rand(4,4), (-3,5)); R = similar(A, (1:1, 6:9)); maximum!(R, A)
0 commit comments